本帖最后由 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
|