Cubmx配置
启用RTC的时钟日历功能
如图所示,启用RTC实时时钟,
首先在Timers中找到RTC并勾选Activate Clock Source和Activate Calendar移动实时时钟源和日历。
在Parameter Setting中将Asynchronous Predivider value设置为31,Synchronous Predivider value 设置为999.(这很重要,因为我们时钟频率设置为32kHz,(31+1)*(999+1)刚好是32k,这保证了时钟一秒走一次)
在Calender Time和Calender Date中根据题目实际要求进行设置,对应的就是程序开始时的时间,这里注意year只能是两位数
函数编写
//RTC实时时钟RTC
RTC_TimeTypeDef rtc_time;
RTC_DateTypeDef rtc_date;
void rtc_process()
{
HAL_RTC_GetDate(&hrtc,&rtc_date,RTC_FORMAT_BIN);
HAL_RTC_GetTime(&hrtc,&rtc_time,RTC_FORMAT_BIN);
}
这里注意获取数据的顺序,由于Keil的原因,必须先获取date再获取time,否则不能正常读取数据
也就是函数中的两条代码不能互换顺序,且无论是否用到另一个,两者都不可或缺,都得写上。
读取完数据后就可以调用数据配合其他代码编程了,诸如此类:
rtc_time.hours //获取的时间小时的数
rtc_date.years //获取的时间年的数