Merhabalar arkadaşlar, bu yazımıda STM32Fx (F0-F1-F2-F4) serilerinde RTC (Real Time Clock) kullanımını göreceğiz.

Peki RTC nedir ?
– RTC , gerçek zamanlı saat anlamına gelip belirli bir frekansta çalışıp, gerçek zaman bilgisini bize geri iletmektedir. Genellikle 32.768Hz’de çalısır. Belirli frekansları istediğimiz ölçüde bölerekte elde etmemiz mümkündür.

 STM32Fx serisinde RTC kullanabilmemiz için işlemci üzerinde bir zaman kaynağı seçmeliyiz.

İşaret kaynaklarımız :  HSE , LSE , LSI modlarıdır.

Bu modları inceleyecek olursak ;

Ben burada tercih olarak LSI (32kHz) ‘ı zaman kaynağı seçtim.
Daha sonra artık zaman dilimlerine göz atacak olursak ;



Tarihi ve saatimizi girdikten sonra artık zamanımızı güzel bir şekilde kullanabilir . Hatta kendisi hangi ayın kaç gün olduğunu ve artık yılı hesaplayıp her zaman gerçek saati size vermektedir. Staj sürecim boyunca uğraştığım projenin  kod diziniminde yazacak olursak.

[codesyntax lang=”php”]

/* başlangıca çekiyoruz RTC ayalarımızı */
RCC_BackupResetCmd(ENABLE);

RCC_BackupResetCmd(DISABLE);

/* LSI kaynağımızı aktif ediyoruz */

RCC_LSICmd(ENABLE);

/* Kaynağımızın Flag'ını temiz olduğundan emin oluyoruz */
while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
{}

/* RTC Zaman Kaynağımızı Seçiyoruz. */
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);

/* RTC zaman kaynağımızı LSI olarak seçiyoruz */
RCC_RTCCLKCmd(ENABLE);

/* RTC APB register'ını senkronize ediyoruz. */
RTC_WaitForSynchro();

/* RTC saat formatımız olarak 24 saat seciyoruz. */
RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;

/* Grafikten baktığımız prediv ayarlarımızı yapıyoruz. */
RTC_InitStructure.RTC_AsynchPrediv = 0x7F;

RTC_InitStructure.RTC_SynchPrediv = 0x0138;

/* RTC'mizi acıyoruz. */
RTC_Init(&RTC_InitStructure);

RTC_TimeStructure.RTC_H12 = RTC_H12_AM;
/* Saati giriyoruz */ 
RTC_TimeStructure.RTC_Hours = RTC_saat;
/* Dakikayı giriyoruz */
RTC_TimeStructure.RTC_Minutes = RTC_dakika;
/* Saniyeyi giriyoruz */
RTC_TimeStructure.RTC_Seconds = RTC_saniye;

/* Yazdığımız bilgileri set ediyoruz. */
RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure);

[/codesyntax]

Zaman ayarları için yapmamız gereken şey define olarak

RTC_saat
RTC_dakika
RTC_saniye
tanımlamamız gerekiyor.

Görüşmek dileğiyle arkadaşlar.

______
Gökhan TARIM