Merhaba arkadaşlar, STM'i öğrenme aşamasındayım. O yüzden sitede ki kodları inceleyerek birazda hazır proje kullanarak denemeler yapmaya niyetlendim.
Bunun içinde önce debug yapıyım dedim ama sürekli sonsuz döngüye giriyor debug işlemim.
Debug başlattığımda system_32f10x.c 'de bulunan "static void SetSysClockTo72(void)" fonksiyonunda bir do while döngüsünde takılı kalıyor.
Kullandığım kodlar
#include "stm32f10x.h"
#include <stdio.h>
void Ayarlar()
{
(*((int*)0xE000ED88))|=0x0F00000; // Floating Point donanimini aktiflestir. !!! Basimizin derdi !!!
// RCC->AHB1ENR |= 0x00000008; // GPIOD donaniminin clock sinyalini uygulayalim
// GPIOD->MODER = 0x55000000; // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde)
// GPIOD->OSPEEDR= 0xFFFFFFFF; // GPIOD nin tum cikislari en yuksek hizda kullanacagiz
RCC->APB1ENR |= 0x00000008;
GPIOD->CRL = 0x33330000;
}
int main()
{
while(1)
{
GPIOD->ODR= 0x0000F000; // Ledler yansin
GPIOD->ODR= 0x00000000; // Ledler sonsun
}
}
Proje dosyamın ekran görüntüsü
(https://s18.postimg.cc/iso7nz62d/Ekran_Al_nt_s1.jpg) (https://postimg.cc/image/iso7nz62d/)
Debug yaparken sonsuz döngüye girdiği yer
(https://s18.postimg.cc/azxjw2sed/Ekran_Al_nt_s.jpg) (https://postimg.cc/image/azxjw2sed/)
Ve debug ayarlarım
(https://s18.postimg.cc/iso7o2lit/Ekran_Al_nt_s2.jpg) (https://postimg.cc/image/iso7o2lit/)
Programınızda HSESTATUS'u while içinde kontrol eden bir bölüm var.Burada anladığım kadarıyla external osilatörün düzgün çalışıp çalışmadığını kontol ediyor düzgün çalıştıysa devam ediyor çalışmadıysa oradan çıkmıyor.Tahminimce osilatörünüz düzgün çalışmıyor o yüzden o döngüden çıkmıyor.
Islemcin 103 fakat kodlar 407 kodlari gibi duruyor. Bu iki islemcinin registerleri vs tamamen ayri.
Evet o
@Zoroaster o yüzden kodları yorum satırına aldım. Sizin paylaştığınız örnekleri 103'e göre devşirdim. Fakat dediğim gibi main'e girmeden önce tıkanıyor debug'da.
Haklısınız
@Emre_Tuncay_ tam orada tıkanıyor 500'e kadar sayıyor sonra sıfırlanıp tekrar 500'e kadar sayıyor. Cümleyi yanlış yazdım aslında sonsuz döngü değil asıl problem bu.
Fakat bu dosyayı ben eklemedim. Device Core ile birlikte bu kodlar geldi o yüzden müdahale edemiyorum.
@ugurer Neden debug ayarlarında 'Use Simulator' işaretli?
Aşağıdaki gibi yapmayı dener misiniz?
(https://s17.postimg.cc/v13gjnxff/stm_debug.png) (https://postimg.cc/image/v13gjnxff/)
Çünkü ST link ile değil Keil ile debug yapmak istiyorum. Elimde kendi yaptığımız bir kart var Keil ile simulasyon yapıp karta aktarmak istiyorum.
Konu açılmışken STM32F103 serisi ile debug yaparken Debug penceresinde ki "Dialog DLL" DARMSTM.DLL "parameter"-pSTM32F103C8(kullandığımız işlemci adı) şeklinde değiştirdiğimizde resimdeki gibi registerler daha ayrıntılı oluyor.ST32F4 serisi için aynı yöntem işe yaramıyor.F4 serisi için nasıl ayarlandığını bilen var mı acaba.
(https://s10.postimg.cc/wzcufpayd/image.png) (https://postimg.cc/image/wzcufpayd/)
(https://s10.postimg.cc/aanng51ad/image.png) (https://postimg.cc/image/aanng51ad/)
@crazy 'e çok teşekkür ederim yardımları sayesinde sorunu hallettik. Şu anda tam istediğim gibi simülasyon yapabiliyorum. Kullanacak arkadaşlar için de ekran görüntüsü
paylaşıyorum. Debug ayarları şekilde ki gibi olduğunda sorunsuz çalışıyor.
(https://s18.postimg.cc/uhevq2eyd/Ekran_Al_nt_s.jpg) (https://postimg.cc/image/uhevq2eyd/)
Keil simulator kartsız debug logic analyzer kullanımı;
St-link ile logic analyzerı nasıl kullanabiliriz.
https://www.youtube.com/watch?time_continue=2&v=C9oYx7f6gao (https://www.youtube.com/watch?time_continue=2&v=C9oYx7f6gao)
video için teşekürler crazy