St_Lib SystemInit hatası

Başlatan tesladream, 29 Mayıs 2013, 22:49:04

tesladream

Arkadaşlar Merhaba,

St_lib i öğrenmeye çalışıyorum fakat sürekli aşağıdaki hatayı alıyorum acaba neden kaynaklanıyor olabilir?

deneme.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f4xx.o).

Halbuki stm libraryleri ekledim manage kısmından St_lib kullanırken SystemInit kullanmamıza gerek var mı sadece basit led-yak uygulaması yapiyorum.
M.Fatih İnanç Hocanın websitesindeki uygulamalar: http://www.fatihinanc.com/diger/stm32f4-discovery-gelistirme-kiti-incelemesi/.

Aşağıda kodu paylaştım SystemIniti açıyorum ledler toggle ediyor ama kapatınca çalışmıyor.
#include "stm32f4_discovery.h"
#include "stm32f4xx_gpio.h"

GPIO_InitTypeDef    GPIO_InitStructure;

void GPIO_Setup(void);
/*void SystemInit()
{
unsigned int i;

    (*((int*)0xE000ED88))|=0x0F00000;  
    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->CR |= 0x01000000;            // PLL calismaya baslasin  (Rehber Sayfa 95)
    while(!(RCC->CR & 0x02000000)); // Pll hazir oluncaya kadar bekle
    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 
} 
*/
void Delay()
{
unsigned int i;
 
     for(i=0;i<0x800000;i++); 
}

int main()
{
    while(1)
      {
						GPIO_ToggleBits(GPIOD, GPIO_Pin_15 | GPIO_Pin_14 |GPIO_Pin_13 | GPIO_Pin_12);
				    Delay();
			} 
}

void GPIO_Setup(void)
{
  /* GPIOD Clocku aktif hale getiriliyor... */
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

  /* PD12,PD13,PD14 ve PD15 çikis olarak ayarlaniyor. GPIO Bus hizi 100 MHz...  */
  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
}

Klein

"SystemInit()" fonksiyonu "system_stm32fxxxx.c" dosyasında. Bu dosya projeye dahil edilmiş mi?
Derleyici ayarlarında "USE_STDPERIPH_DRIVER" tanımı var mı?

tesladream

   Evet hocam yazınızı ekledim sonrasında baktım yine olmadı halbuki aynı dosyalar peripheral example larda var ama bendeki çalışmadı sonra bahsettiğiniz dosyaya girdim değiştirdim GPIO_MODER falan ama olmadı acaba elinizde temiz st_lib eklenmiş system_init gerektirmeyen bir dosya var mı hocam?

Klein

Yukarıda bahsettiğim tanımı yaptın,  "system_stm32fxxxx.c" dosyasını projeye dahil ettin, "stm32f4xx.h" dosyasını include ettin ve halen "SystemInit()" fonksiyonunu bulamıyorum hatası mı alıyorsun?

tesladream

#4
Aynen ustacım  dediğin gibi options-c/c++ kısmına yazmıştım ama systemınit hatası alıyorum hala

mesaj birleştirme:: 30 Mayıs 2013, 19:58:14

   stm324xx.h dosyası zaten include edilmişti usta ona başka bir işlem uyguluyor muyuz sen bi video tutorial falan ceksen bizde feyz alsak nasıl olur:)

Klein



Proje ağacının resimdeki gibi görünmesi gerek.
"system_stm32f4xx.c" muhakkak projeye ekli olmalı.
ayrıca kütüphanenin yolunu da derleyiciye bildirmiş olmalısınız.

http://www.dosya.tc/server10/iFysoT/Stm32F4Conf.rar.html
Burada "system_stm32f4xx.c", "stm32f4xx_conf.h" , "main.c" ve proje dosyası var.

tesladream

  Klein hocam dediğin gibi ekledim c file ları ardından headerları gösterdim hiç hata vermedi ama kodu yüklüyorum bir şey göremedim veri göndermiyor ledlerde yanmıyor acaba neden kaynaklanıyor olabilir?

Klein

Verdiğim kodu derlediysen çalışması gerek.
Programı karta ne ile yüklüyorsun?

debugger olarak ST-Link seçili olduğundan emin ol. Simülatörde kalmış olabilir.

tesladream

Klein hocam verdiğiniz dosyadaki kodlar calışıyor problemim başka bir yerde

http://safaunalmis.blogspot.com/2013/02/stm32f4-discovery-icin-keil-ayarlari.html buradaki arkadaş yapılacakları guzel anlatmıs tek tek yaptım template bir proje hazırladım sizin usart kodunu attım ama çalışmıyor.Ustune bir de Keil 4.60 kurdum onda da aynı problemim var.St_lib kodlarını ancak library in icindeki ornek projelerde deneyebiliyorum.Ama herseyi denedim hala anlamadım neden kaynaklandığını.