在昨天OLED驱动显示的基础上做了RTC实验,同时利用OLED显示输出RTC日历信息。
一、实验资源
1、HC32F460-EVB;
2、Keil V5.28;
3、ST-LINK调试器
二、资源简介
HC32F460PETB的实时时钟 (RTC) 模块以BCD码格式保存时间信息,支持12/24小时两种时制,能够根据月份和年份自动计算日数28、29
(闰年)、30和31日。实际应用中还可以设定闹钟,闹钟还可以产生中断;为避开温度对晶振的影响还可以通过时钟误差补偿寄存器进行适度补偿,这对于提升时钟计时的准确性提供了保障。
RTC实时时钟模块的寄存器比较多,但配置相对还是比较简单的。
三、代码实现
实验的代码参考了DEMO,其中只是设置了时、分、秒的参数。为了让OLED显示的字体显得饱满重新写了一个显示12*16字符函数:
if (0 == RTC_GetDateTime(RtcDataFormatDec, &stcCurrDateTime))
{
Hour = BCD2DEC(stcCurrDateTime.u8Hour);
Minute = BCD2DEC(stcCurrDateTime.u8Minute);
Second = BCD2DEC(stcCurrDateTime.u8Second);
OLED_Show12x16(0,0,Hour/10);
OLED_Show12x16(16,0,Hour%10);
OLED_Show12x16(32,0,10);
OLED_Show12x16(48,0,Minute/10);
OLED_Show12x16(64,0,Minute%10);
OLED_Show12x16(80,0,10);
OLED_Show12x16(96,0,Second/10);
OLED_Show12x16(112,0,Second%10);
}
四、实验结果
五、实验总结
RTC实时时钟模块在工程应用中简化了硬件设计、降低了成本,是一个非常实用的模块。
|