打印
[活动专区]

【AT-START-F407测评】+ RTC电子时钟

[复制链接]
597|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

AT32F407内配有RTC 计时器,使用它可以轻松地实现电子时钟的功能,在OLED屏的配合下,其显示效果如下图所示。
电子时钟效果图

在OLED屏显示程序的基础上,它只需在文件头部添加#include "rtc.h",然后在程序中添加一个修改过的RTC显示函数,其内容如下:
void rtc_show_time(void)
{
if(RTC_GetFlagStatus(RTC_FLAG_PACE) != RESET)      
{
RTC_Get();
OLED_ShowNum(0,0,20,2,16);
OLED_ShowNum(16,0,calendar.w_year,2,16);
OLED_ShowNum(40,0,calendar.w_month,2,16);
OLED_ShowNum(64,0,calendar.w_date,2,16);
OLED_ShowNum(16,2,calendar.hour,2,16);
OLED_ShowNum(40,2,calendar.min,2,16);
OLED_ShowNum(64,2,calendar.sec,2,16);
/* Clear the RTC Second flag */
RTC_ClearFlag(RTC_FLAG_PACE);
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
}  
Delay_ms(400u);
}

此外,为了保证RTC的计时值与当前时间保持一致,需修改RTC初始化函数RTC_Init()中的初始值设置。
形成显示效果的主程序为:
int main(void)
{
AT32_Board_Init();
AT32_OLED_Init();
OLED_Init();
OLED_Clear();
OLED_ShowString(0,0,"AT-START-F407",16);
OLED_ShowString(0,2,"OLED & RTC",16);     
RTC_Init();
Delay_ms(1000u);
Delay_ms(1000u);
OLED_Clear();
OLED_ShowChar(32,0,'-',16);
OLED_ShowChar(56,0,'-',16);
OLED_ShowChar(32,2,':',16);
OLED_ShowChar(56,2,':',16);
while(1)
{
rtc_show_time();
}
}



使用特权

评论回复
沙发
caizhiwei| | 2021-1-26 15:04 | 只看该作者
上RTOS玩玩看~

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2021-1-26 16:33 | 只看该作者

一直在裸奔,没接触过呀,有时间看看。最近好像大家都在玩操作系统移植,会不会移植的开销比较大,而影响开发程序的空间?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2675

帖子

37

粉丝