Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: muhittin_kaplan - 09 Ocak 2012, 15:29:51

Başlık: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: muhittin_kaplan - 09 Ocak 2012, 15:29:51
Neden Bilmiyorum. Bunalmış Hocanın Buton Örneğinden Yola Çıkarak
#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
    GPIOA->MODER = 0x00000000;     // GPIOA Giriş
}

int main()
{
int A;
    while(1)
      {
         if (GPIOA->IDR & 0x000000001)
           { 
             A++;
             GPIOD->ODR= 0x00000000&(A<<12);     // Ledler yansin
            {
      }
}
// Programın sonu.


Yazdım Derledim Gönderdim. Sonrasında Kartı Denediğimde Bağlantının Çalışmadığını Gördüm.
Tabi Tutuştum :D
Diğer Kart Normal Çalışıyordu. Bende Ya Allah Diyerek STM32 ST-LINK UTIL ile
Kartın üzerindeki RESET e Basılı Tutarak Connect dedim ce Reset i bıraktım. Bağlandı. Henem  Full Erase Yaptım.
Şu An bir Sıkıntı Yok. Sebebi hakkında Yorumu Olan :)
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: Elektroemre - 09 Ocak 2012, 15:33:19
Hocam,

main içerisinde;
SystemInit()

fonksiyonunu çağırmamışsın. Doğal olarak oradaki kurtarma için belli bir delay süreside işlememiş. Sebebi bu olabilir.
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: muhittin_kaplan - 09 Ocak 2012, 15:38:27
SystemInit()
i nereden çağırmam gerekiyor.
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: Elektroemre - 09 Ocak 2012, 15:58:17
SystemInit() eğer startup dosyası içerisinde çağrılmıyorsa, main de başlar da bir yerlerde çağrılmalı. Bir sürü konfigurasyon yapılmış orada, ki hepsi gerekli .
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: SERRO EFE - 09 Ocak 2012, 16:00:20
Hocam main içersinde port vs. tanımlamaları yapmadan önce mcuyu biraz bekletirseniz bu tür problemler olmayacaktır.
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: muhittin_kaplan - 09 Ocak 2012, 16:00:55
GPIOA->MODER = 0x00000000;     // GPIOA Giriş

dan kaynaklanıyor. Neden ?
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: SERRO EFE - 09 Ocak 2012, 16:05:09
Hocam swd pinleri eğer porta ile ilişkili ise siz swd yi kontrol etmesine fırsat kalmadan giriş olarak yönlendiriyorsunuz. O tanımlamayı yapmadan önce gecikme koyarsanız problem kalmaz. Başıma gelmişti benimde

not;
Porta.13-Porta.14 swd pinlerine bağlı
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: muhittin_kaplan - 09 Ocak 2012, 20:11:51
Anladım. yanlız PortA yı giriş yada çıkış yapan MODER in Reset value değeri 0. yani resetlediğimde de 00 oluyor yani giriş
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: ErsinErce - 09 Ocak 2012, 20:27:07
A13 14 15 pinleri alternatif (0b10) modda oluyor, reference manualden reset value değerine bakarsanız 0xA8000000 değerini göreceksiniz
Başlık: Ynt: 32F4 Discovery Bğlantı Hatası Ve Çözümü
Gönderen: muhittin_kaplan - 09 Ocak 2012, 20:30:42
Evet PortA ve PortB farklıymış. Resetlenince Hepsi Sıfır Olmuyormuş Demekki  :-[