STM32F4 Discovery yüklediğim programlar çalışmıyor

Başlatan Seferi, 27 Eylül 2012, 01:30:32

Seferi

STM32F4 Discovery de bir türlü program çalıştıramadım. Keil deki örnek program hariç hiçbir programı çalıştıramadım. Forumda paylaşılmış çalışan programları da çalıştıramıyorum. Derleme ve karta yüklemede hiçbir problem yok. Forumda bir arkadaş daha aynı sorunla karşılaşmış galiba ama o başka bir derleyici kullanarak sorunu halletmiş. Dediğine göre; keil ile alakalı bir problem varmış attolic true studio kurarak sorunu halletmiş. Acaba problem ne olabilir?

XX_CİHAN_XX

Kendin proje oluşturupta mı çalıştıramıyorsun?
ST nin hazır projelerini mi çalıştıramıyorsun?
Şamata başlığında aradığın bütün cevaplar var aslında ama uzun bir başlık sabırla okusan çözüm bulacaksın.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

Seferi

#2
Hocam keilin projelerini derleyip yüklediğim zaman çalışıyor, fakat kendim proje oluşturup, "ARM öğreniyoruz" bölümündeki kodları hiç değiştirmeden derleyip yüklediğimde bile çalışmıyor. Şamatalar bölümünü okudum.
Bir de şöyle bir durum oldu: "z" hocanın buton led kontrol programının sadece main fonksiyonunu , keilin örnek Blinky projesinin main fonksiyonuna kopyalayıp, Blinky yi derlediğimde buton_led çalışıyor.
Problem ne olabilir?

muhittin_kaplan


Seferi

Aşağıdaki programı hatasız derleyip yüklüyorum ama butona bastığımda hiç tepki yok.

#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 
} 

int main()
{
    while(1)
      {
         if (GPIOA->IDR & 0x000000001) GPIOD->ODR= 0x0000F000;     // Ledler yansin
         else GPIOD->ODR= 0x00000000;     // Ledler sonsun
      } 
}


MC_Skywalker

peki şu projeyi bir yüklermisin sadece LED leri flash ediyor.

https://hotfile.com/dl/174051888/ba97d4d/St32M4F-00001.rar.html

Birde STM32F4 Discovery kartının tüm bağlatıları yapılmış halde üstten fotografını çekip buraya yüklermisin

Seferi

#6
Hocam malesef o program da çalışmadı. Fotoğrafı ekledim ama net değil.

[IMG]http://imageshack.us/a/img850/7484/27092012627.jpg[/img]

GreeN

GPIOA->MODER

portA giriş ayarladın mı? ben göremedim ...
Terörü Lanetliyoruz.

Seferi

Alıntı yapılan: GreeN - 27 Eylül 2012, 17:21:04
GPIOA->MODER

portA giriş ayarladın mı? ben göremedim ...

Ledleri flash eden programı deniyordum şimdi o da olmadı. MC_Skywalker' in yukarıda linkteki örneği. Orada portA yı giriş yapmaya gerek yok sanırsam.

XX_CİHAN_XX

Alıntı yapılan: mmilamur - 27 Eylül 2012, 14:06:01
Hocam keilin projelerini derleyip yüklediğim zaman çalışıyor, fakat kendim proje oluşturup, "ARM öğreniyoruz" bölümündeki kodları hiç değiştirmeden derleyip yüklediğimde bile çalışmıyor. Şamatalar bölümünü okudum.
Bir de şöyle bir durum oldu: "z" hocanın buton led kontrol programının sadece main fonksiyonunu , keilin örnek Blinky projesinin main fonksiyonuna kopyalayıp, Blinky yi derlediğimde buton_led çalışıyor.
Problem ne olabilir?

Keilin çalıştırdığın projelerinden birinin proje klasöründen system_stm32f4xx.c dosyası ile startup_stm32f4xx.lst dosyasını kendi proje klasöründekilerin yerine kopyala.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

GreeN

Alıntı yapılan: mmilamur - 27 Eylül 2012, 17:26:42
Ledleri flash eden programı deniyordum şimdi o da olmadı. MC_Skywalker' in yukarıda linkteki örneği. Orada portA yı giriş yapmaya gerek yok sanırsam.

Peki  startup_stm32f4xx.s  versiyonu kaç  ? Keil Proje ekranında ekli dosyaya çift tıklayın  dosyada 4. satır olmalı

* Version            : V1.0.0RC1   gibi bir ibare var ? Benim karta firmware güncelleme yapmıştım ondan sonra startup_stm32f4xx.s  v1.0 veriyonu ile projeerim çalışmaz hale geldi. Rastlatıda olabilir. Ama V1.0.0RC1 ile çalışmaya başladı.
Terörü Lanetliyoruz.

Seferi

Alıntı yapılan: GreeN - 27 Eylül 2012, 17:54:59
Peki  startup_stm32f4xx.s  versiyonu kaç  ? Keil Proje ekranında ekli dosyaya çift tıklayın  dosyada 4. satır olmalı

* Version            : V1.0.0RC1   gibi bir ibare var ? Benim karta firmware güncelleme yapmıştım ondan sonra startup_stm32f4xx.s  v1.0 veriyonu ile projeerim çalışmaz hale geldi. Rastlatıda olabilir. Ama V1.0.0RC1 ile çalışmaya başladı.

Hocam
Version            : V1.0.0
yazıyor.

GreeN

O zaman aşağıdaki kodu startup_stm32f4xx.s olarak kaydet. Sen yinede eskisini yedekle ve bu dosyayı önce bir yukarıda verilen led flash eden peogram klasörüne yapıştır. Bakalım ledlerde hareket varmı ?

Birazdan link veriririm kod uzun geldi......


Edit:

https://rapidshare.com/files/2820355343/startup_stm32f4xx.s
Terörü Lanetliyoruz.

Seferi

#13
Hocam startup_stm32f4xx.s dosyasını değiştirdim artık çalışıyor.
Ama niye böyle oluyor acaba? Kendindeki startup_stm32f4xx.s daha yeni bir sürüm ve ST nin sitesinden indirip derlediğim bütün programlar çalışıyor.  :-\

mesaj birleştirme:: 27 Eylül 2012, 19:56:34

Alıntı yapılan: GreeN - 27 Eylül 2012, 18:03:03
O zaman aşağıdaki kodu startup_stm32f4xx.s olarak kaydet. Sen yinede eskisini yedekle ve bu dosyayı önce bir yukarıda verilen led flash eden peogram klasörüne yapıştır. Bakalım ledlerde hareket varmı ?

Birazdan link veriririm kod uzun geldi......


Edit:

https://rapidshare.com/files/2820355343/startup_stm32f4xx.s


Hocam bir sıkıntı daha çıktı senin yolladığın startup_stm32f4xx.s dosyası ile yazdığım programları keil debug yapmıyor sadece derliyor yükleme işini STM32 ST-LINK Utility ile yapıyorum.

mesaj birleştirme:: 27 Eylül 2012, 20:01:11

Keil şöyle bir uyarı veriyor : Flash Download failed - "Cortex-M4"

XX_CİHAN_XX

#14
Alıntı yapılan: mmilamur - 27 Eylül 2012, 19:45:55
Hocam startup_stm32f4xx.s dosyasını değiştirdim artık çalışıyor.
Ama niye böyle oluyor acaba? Kendindeki startup_stm32f4xx.s daha yeni bir sürüm ve ST nin sitesinden indirip derlediğim bütün programlar çalışıyor.  :-\
Sebebi şu;
FPU unitesi keilin default ayarlarında açık olarak geliyor ama startup kodu oluşuturulurken bu ünite tanımlanmadan oluşuturuluyor.
Keilin çalışan projelerindeki startup kodunu incelediğin zaman Resethandler içinde FPU ünitesinin tanımlandığını görebilirsin.
Senin çalışmayan startup kodunda ise bu ünite tanımlı değildir. Fakat aksi gibi keilin ayarlarında bu kısım aktif olduğu için debug yapamadan HardwareFault hatasına düşer ve program main kısmına geçemez.
Sen startup kodunu değiştirerek FPU ünitesini tanımlı hale getirdin yukarıda bu yüzden çalışan bir projenin startup kodunu kendiniki ile değiştir demişitim   ;)

mesaj birleştirme:: 27 Eylül 2012, 20:57:32

Alıntı yapılan: mmilamur - 27 Eylül 2012, 19:45:55
Hocam bir sıkıntı daha çıktı senin yolladığın startup_stm32f4xx.s dosyası ile yazdığım programları keil debug yapmıyor sadece derliyor yükleme işini STM32 ST-LINK Utility ile yapıyorum.

ST-LINK UTILITY yerine Depracted Versionu seçip debug yaparak yükle ve çalıştır.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.