Program-2 User Butonu ile Ledleri Yakma
19 Ocak 2012


   
           
           
      


Custom Search
Keil 4.22a buradaki örnek kodlar picproje.org dan sayın [bunalmis] hocaya aittir.
Programı F7 ile derledikten sonra Debug menüsünden start debugger komutu ile STM kartımızdan debug işlemini başlatabilir F11 ile programı adım adım çalıştırabilirsiniz

#include "STM32F4xx.h"

void SystemInit()
{
unsigned int i;

    for (i = 0;i < 0x00100000; i++);              // OSC oturtma ve kurtarma rutini burada 1.048.576 sayar
    RCC->CFGR |= 0x00009400;                 // AHB ve APB hizlarini max degerlere set edelim     100: AHB clock divided by 2 101: AHB clock divided by 4
    RCC->CR |= 0x00010000;                    // HSE Xtal osc calismaya baslasin  Bit 17 HSERDY: HSE clock ready flag      
    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
      }
}
// Programın sonu.