本帖最后由 yuyy1989 于 2023-10-29 18:50 编辑
#申请原创# @21小跑堂
ERTC是AT32F423的实时时钟,支持2组闹钟支持时间戳,时钟源可从LEXT、 LICK、分频后的 HEXT 中选择
这块板子外接了32.768kHz的低速晶振
在AT32 Work Bench开启它,并配置ERTC使用
中开启ERTC的时钟源和日历,可以在这里直接配置初始的日期和时间
配置唤醒定时器每1秒中断一次并开启唤醒中断,然后生成代码,这里要注意一下,生成的ERTC配置代码中唤醒中断的相关代码缺少了一部分,ERTC唤醒中断还要配置EXINT
需要手动加上相关代码
后来再生成代码这里又有了
中断函数处理
void proc_ertc_update()
{
ertc_time_type time;
ertc_calendar_get(&time);
printf("Time: %02d-%02d-%02d 星期%d ",time.year, time.month, time.day, time.week);
printf("%02d:%02d:%02d\r\n",time.hour, time.min, time.sec);
}
void ERTC_WKUP_IRQHandler(void)
{
/* add user code begin ERTC_WKUP_IRQ 0 */
extern void proc_ertc_update();
if(ertc_flag_get(ERTC_WATF_FLAG) != RESET)
{
ertc_flag_clear(ERTC_WATF_FLAG);
exint_flag_clear(EXINT_LINE_22);
proc_ertc_update();
}
/* add user code end ERTC_WKUP_IRQ 0 */
/* add user code begin ERTC_WKUP_IRQ 1 */
/* add user code end ERTC_WKUP_IRQ 1 */
}
运行效果
结合之前的LCD
|