STM32F429 Discovery STM32F429 Discovery Dijital Saat Uygulaması By Konuk Yazar Posted on 18 Şubat 2015 5 min read 2 0 4,393 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, Bu yazımızda,STM32F429 Discovery’de dijital bir saat yapıyoruz.Tabiki bunu gerçekleştirebilmemiz için RTC(Real-Time Clock) kavramı üzerinde biraz durmamız gerekiyor. RTC , gerçek zamanlı saat anlamına gelip belirli bir frekansta çalışıp, gerçek zaman bilgisini bize geri iletmektedir. Belirli frekansları istediğimiz ölçüde bölerekte elde etmemiz mümkündür.RTC dediğimiz malzemeler üzerlerinde bulunan kristal osilatör ile kendi saat pulslarını üretip zamanı tutan entegrelerdir.Genelde çalıştıkları kristaller 32769Hz dir. Bunu bölerek 1Hz lik saat pulslarını elde etmektedirler. En çok kullanılan modeller olarak DS1302 ve DS1307 malzemelerini sayabiliriz. Bu malzemeler genelde bir işlemciye bağlanarak kullanılırlar. Bağlantı şekline bakılırsa DS1302 3 pinden seri haberleşme protokolünü , DS1307 ise I2C protokolünü kullanmaktadır.Her ikisinin ortak yönü ise zaman bilgilerini tutma yöntemidir. BCD yani Binary Coded Desimal formatında tutulur bu bilgiler. RTC Library Dahili ve harici saat kaynaklarını destekler. PC14,PC15 dahili kristal için kullanılır. Wakeup kesmesini destekler. Zamanı “01.01.1970 00:00:00” saatten itibaren destekler. Verileri BCD veya binary formatta almayı destekler. [php] #include "defines.h" #include "stm32f4xx.h" #include "tm_stm32f4_rtc.h" #include "tm_stm32f4_disco.h" #include "tm_stm32f4_delay.h" #include "tm_stm32f4_ili9341.h" #include <stdio.h> char buf[50], buf2[50]; TM_RTC_Time_t datatime; int main(void) { SystemInit(); TM_DELAY_Init(); TM_DISCO_ButtonInit(); TM_DISCO_LedInit(); TM_ILI9341_Init(); TM_ILI9341_Fill(ILI9341_COLOR_GREEN); TM_ILI9341_Rotate(TM_ILI9341_Orientation_Portrait_2); TM_ILI9341_Puts(120, 310, "roboturka.com", &TM_Font_7x10, ILI9341_COLOR_BLACK, ILI9341_COLOR_ORANGE); TM_ILI9341_Puts(20, 200,"www.roboturka.com", &TM_Font_11x18, ILI9341_COLOR_RED, 0x0000); TM_ILI9341_Puts(65, 220,"BILAL KAYA", &TM_Font_11x18, ILI9341_COLOR_RED, 0x0000); TM_ILI9341_Puts(50, 100,"DIGITAL CLOCK", &TM_Font_11x18, ILI9341_COLOR_RED, 0x0000); if (!TM_RTC_Init(TM_RTC_ClockSource_Internal)) { } TM_RTC_Interrupts(TM_RTC_Int_1s); while (1) { if (TM_DISCO_ButtonPressed()) { datatime.hours =21; datatime.minutes = 4; datatime.seconds = 55; datatime.year = 15; datatime.month = 2; datatime.date = 16; datatime.day = 2; TM_RTC_SetDateTime(&datatime, TM_RTC_Format_BIN); } } } void TM_RTC_RequestHandler() { TM_RTC_GetDateTime(&datatime, TM_RTC_Format_BIN); sprintf(buf, "%02d.%02d.%04d %02d:%02d:%02d ", datatime.date, datatime.month, datatime.year + 2000, datatime.hours, datatime.minutes, datatime.seconds ); TM_ILI9341_Puts(10, 15, buf, &TM_Font_11x18, ILI9341_COLOR_YELLOW, 0x0000); if( datatime.minutes==26 ){ TM_DISCO_LedToggle(LED_RED | LED_GREEN); }} [/php] Proje dosyalarının tamamına buradan ulaşabilirsiniz… PROJENİN VİDEOSU Kaynak:www.stm32f4-discovery.com adresinden faydalanılmıştır….