STM32F4-DISCOVERY kod çalışmıyor

Başlatan MCansız, 22 Aralık 2012, 14:48:03

Ali_54

#15
     merhaba. z hocaya herşeyden önce arm yazıları için teşekkür ederim.
bende yukarıda yazılanlarla benzer sorun yaşıyorum ama herşey eksikiz görünüyor. ve z hocamın kodundan bire bir yaptığım kod çalışmıyor.
    * kodu breakpointler koyarak analiz ettim. SystemInit() kodu kesinlikle çalışıyor. adım adım baktım. hatta SytemInit() in en sonuna led yakm kodu koydum. sytem init işletiliyor. ama syteminitten sonra main() e girmiyor. mk_29 kardeşte de tahmin ediyorum aynı Sıkıntı oldu. main çalışmıyor belli ki.  Sorun ne olabilir? yoksA main çağırılmıyor mu? ben arm da henüz yeniyim. bu arada keil kurulumuyla gelen led örneği çalışıyor onu devşirebiliyorum ancak
#include "STM32F4xx.h"

void SystemInit()
 {
	 
unsigned int i;

    for (i=0;i<0x00100000;i++);          // OSC oturtma ve kurtarma rutini
    RCC->CFGR |= 0x00009400;         // AHB ve APB hizlarini max degerlere set edelim
    RCC->CR |= 0x00010000;            // HSE Xtal osc calismaya baslasin        
    while (!(RCC->CR & 0x00020000));// Xtal osc stabil hale gelsin
    RCC->PLLCFGR = 0x07405408;      // PLL katsayilarini M=8, N=336, P=2 ve Q=7 yapalim
//  RCC->PLLCFGR = 0x07402A04;     // PLL katsayilarini M=4, N=168, P=2 ve Q=7 yapalim
    RCC->CR |= 0x01000000;            // PLL calismaya baslasin  (Rehber Sayfa 95)
    while(!(RCC->CR & 0x02000000)); // Pll hazir oluncaya kadar bekle
//  FLASH->ACR = 0x00000705;        // Flash ROM icin 5 Wait state secelim ve ART yi aktif edelim (Rehber Sayfa 55)
    FLASH->ACR = 0x00000605;        // Flash ROM icin 5 Wait state secelim ve ART yi aktif edelim (Rehber Sayfa 55)
    RCC->CFGR |= 0x00000002;        // Sistem Clk u PLL uzerinden besleyelim
    while ((RCC->CFGR & 0x0000000F) != 0x0000000A); // Besleninceye kadar bekle
    RCC->AHB1ENR |= 0x0000000F;    // GPIO A,B,C,D clock'u aktif edelim 
    GPIOD->MODER = 0x55000000;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (LEDler icin)
    GPIOD->OSPEEDR= 0xFFFFFFFF;   // GPIOD nin tum cikislari en yuksek hizda kullanacagiz 

	  GPIOD->ODR= 0x0000F000;     // Ledler yansin        
 } // burdan aşağıı işletilmiyor. breakpoint koyarak deneyebilirssiniz. bu satırdan sonra startup_tm32f4xx.s e atlıyor
 
 
 void Delay()
{
   unsigned int i;
   for(i=0;i<0x010000;i++); 
}

 int main()
 {
	 GPIOD->ODR= 0x0000F000;
	 while(1)
      {
         GPIOD->ODR= 0x0000F000;     // Ledler yansin
         Delay();
         GPIOD->ODR= 0x00000000;     // Ledler sonsun
         Delay();
      } 
 } 
 // Programin sonu.
1 harf öğretenin 4 gün kölesi olurum.

Ali_54

çözüm için Araştırmaya devam ederken şurda sebebini buldum: https://www.picproje.org/index.php?topic=42626.0 kusur bizde değil. startup kanaklıymış. orda anlatılanları denedim. yine olmadı. ama yine ordaki konudan hareketle FPU uniteisini project > options for taget ten devre dışı bıraktım.

sonuç: main çalıştı. ama bu geçici bir çözüm. yarın bir gün fpu ya illaki ihtiyaç olacak.
1 harf öğretenin 4 gün kölesi olurum.