Jak na: Hodiny RTC
Real Time Clock (RTC) je hardwarová periferie v mikrokontroléru STM32. Měří reálný čas a využívá ji i plánovač k plánování úloh.
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.
Mikrokontrolér STM32 v pouzdře LQFP48 nemá pin pro záložní baterii. Pokud chcete, aby RTC dál počítalo, musí zůstat připojený alespoň jeden zdroj napájení. Když tedy potřebujete vyměnit bateriový modul, nechte modul Core Module připojený přes USB a RTC poběží dál.
Odkazy
Struktura RTC
Knihovna RTC používá standardní strukturu jazyka C pro čas.
Obsahuje sekundy, minuty, hodiny, den, měsíc a rok. Při čtení RTC se do položky timestamp doplní správné časové razítko UNIX.
Nastavení data a času
Tento příklad nastaví RTC na 10.5.2020 18:26:10.
Příklad kódu: 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);
Registr roku počítá od roku 1900, takže pokud chcete nastavit rok 2020, zapište do proměnné tm_year hodnotu 120.
Hodnota registru roku 0 znamená 1900 a hodnota 199 znamená 2099.
Získání data a času
Příklad kódu: čtení data a času 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);
Rok v běžném formátu získáte tak, že k hodnotě v datetime.tm_year přičtete 1900.