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.