【EV Board (MM32L0136C7P)测评】+RTC电子时钟
本帖最后由 jinglixixi 于 2022-11-30 09:57 编辑在MM32L0136片内有1 个RTC 计数器,并支持日历功能。在使用串口测试时,其测试结果如图1所示。图1 测试结果
由图可知,它是通过串口发送字符“a”来进行RTC的初始化,由字符“b”来读取计时值,由字符“c”来启用闹钟功能。此外,通过串口以1秒的间隔来发送字符“a”,所得到的计时值也是很准确的。
RTC的初始计时值是通过参数定义来实现,其内容如下:#define APP_RTC_SUBSEC_COUNTFREQ256u#define APP_RTC_TIME_SOURCE RTC_TimeSource_BypShad#define APP_RTC_TIMEMODE RTC_TimeMode_24Hour#define APP_RTC_TIMEFORMAT RTC_HourFormat_AM#define APP_RTC_OUTPUT RTC_OutPut_None#define APP_RTC_POLARITY RTC_Polarity_None#define APP_RTC_TIMEOUT 1000u#define APP_RTC_YEARS 11u //2011-03-04#define APP_RTC_MONTHS 3u#define APP_RTC_DAYS 4u#define APP_RTC_WEEK 1u // 周一#define APP_RTC_HOURS 1u // 1:2:4#define APP_RTC_MINUTES 2u#define APP_RTC_SECONDS 4u#define APP_RTC_ALARM_SUBSEC 0xfa#define APP_RTC_ALARM_SECONDS 8u#define APP_RTC_ALARM_MINUTES 2u#define APP_RTC_ALARM_HOURS 1u#define APP_RTC_ALARM_DAYS 4u#define APP_RTC_ALARM_MASK RTC_ALARMMASK_NONE#define APP_RTC_SUBSEC_MASK RTC_SubSecmask_8bit
在使用时,可按自己的需要来调整。此外,也可添加相应的函数来实现按键的动态设置。
在添加LCD屏的情况下,则可轻松地实现电子时钟的功能,其效果如图2所示。图2 显示效果
实现电子时钟的主程序为:int main(void)
{
uint32_t dat;
BOARD_Init();
app_slcd_init();
app_rtc_init();
while (1)
{
app_rtc_get_current_time();
LCD_DisplayNumberH(rtc_time.Hours, rtc_time.Mins, rtc_time.Secs);
app_delay(100);
}
}
值得注意的是,RTC的计时值不能以十进制的方式来显示,而必须转换为十六进制数来显示。此外,还可以使用上层的小号数值来显示日期值中的月日值,如图3的形式。但目前的问题是,第3位数字的段码只提供了一半的段码输出,暂时还无法实现它的全段显示。图3 显示日期与时间
演示视频:https://www.bilibili.com/video/BV1jP4y197cs/?vd_source=f302fc0cc3a0425328db53a3b92082ca
时间中间的2个冒号用SLCD的闪烁功能实现一下,显示就更完美了 xld0932 发表于 2022-11-30 12:57
时间中间的2个冒号用SLCD的闪烁功能实现一下,显示就更完美了 ...
有时间就整一下 RTC的精度怎么样? tabmone 发表于 2022-12-12 10:44
RTC的精度怎么样?
精确的要有仪器,一般用没问题。
页:
[1]