STM32F4 HSE system clock nasıl set edilir ?

Başlatan magnetron, 24 Şubat 2013, 19:42:58

magnetron

merhaba forum

OLIMEX den STM32F4-E407 board aldım
RS232 haberleşme yapmaya çalışırken
bir de baktım adamlar standart 25 MHz yerine 12 Mhz kristal kullanmışlar

o yüzden 9600 baud haberleşmek için (9600/12)*25 = 20000 baud set ediyorum
ancak o zaman haberleşiyor

bunu bulmak da oraya sor buraya sor 2 günümü aldı

şimdi forumdan ricam

12 MHz kristal ile 168 Mhz full speed çalıştırmak için
SetSysClock fonksiyonu nasıl olmalıdır

yardımcı olabileceklere teşekkür ederim

fatih6761

Hangi derleyiciyi ve hangi kütüphaneleri kullandığınızı söyleseydiniz daha iyi olurdu. StdPeriph kullandığınızı varsayıyorum.
SetSysClock fonksiyonunu hiç ellemeyin. #define ile tanımlanan değerleri değiştirmeniz yeterli.
stm32f4xx_conf.h dosyasında Includes kısmının hemen üstüne şunu ekleyin:
#ifdef HSE_VALUE

#undef HSE_VALUE

#define HSE_VALUE	12000000

#endif

Burada HSE_VALUE değeri kristal değeri oluyor.
system_stm32f4xx.c dosyasında şu kısmı bulun ve aşağıdaki gibi değiştirin:
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      12
#define PLL_N      336

/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2

/* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */
#define PLL_Q      7

Eğer CooCox IDE kullanıyorsanız startup sürecinde SystemInit çağırmak için bir ekleme daha yapmanız gerekiyor. Buna da dikkat edin.

magnetron

fatih hocam çok teşekkür

ben eclipse + yagarto + std peripheral library kullanıyorum

bir de hocam sizin gibi bilgili birini bulmuşken ;

STM32F4 için en son sürüm std peripheral library linkini biliyor musunuz ?

bu ST'nin web sitesinde bir türlü yolumu bulamadım

teşekkür