Přeskočit na hlavní obsah

How To: Hodiny RTC

Real Time Clock (RTC) je hardwarová periferie v mikrokontroléru STM32. Používá se ve scheduleru pro plánování úloh a zároveň umí měřit reálný čas.

Do jejích hardwarových registrů můžete uložit datum a čas a hodiny běží dál, i když znovu nahrajete firmware nebo resetujete procesor.

caution

Protože STM32 v pouzdře LQFP48 nemá pin pro záložní baterii, musíte zařízení nechat připojené alespoň k jednomu zdroji napájení, pokud chcete, aby RTC dál počítalo. Takže když potřebujete vyměnit bateriový modul, můžete Core Module nechat připojený přes USB, aby RTC běželo dál.

Odkazy

Struktura RTC

Knihovna RTC používá standardní strukturu jazyka C pro čas.

Obsahuje sekundy, minuty, hodiny, den, měsíc, rok. Pokud čtete RTC, je timestamp vyplněn správným UNIX timestampem.

Nastavení data a času

info

Tento příklad nastaví RTC na 10.5.2020 18:26:10.

Příklad kódu pro nastavení struktury RTC

struct tm datetime;

datetime.tm_hour = 18;
datetime.tm_min = 26;
datetime.tm_sec = 10;

datetime.tm_mon = 10;
datetime.tm_mday = 5;
datetime.tm_year = 120;

twr_rtc_set_datetime(&datetime, 0);

tip

Registr roku počítá od roku 1900, takže pokud chcete nastavit rok 2020, měli byste do proměnné tm_year zapsat hodnotu 120.

Hodnota registru roku 0 znamená 1900 a hodnota 199 znamená 2099.

Získání data a času

Příklad kódu pro čtení datetime z RTC

struct tm datetime;
twr_rtc_get_datetime(&datetime);
twr_log_debug("$DATE: \"%d-%02d-%02dT%02d:%02d:%02dZ\"", datetime.tm_year, datetime.tm_mon, datetime.tm_mday, datetime.tm_hour, datetime.tm_min, datetime.tm_sec);

tip

Abyste získali přesný rok v běžném formátu, stačí k hodnotě v datetime.tm_year přičíst 1900.