概述
本文主要是使用AT32F403A开发板,基于V2库实现rtc的日历功能。
串口工具使用的Atlink-ez自带的串口功能.
工程建立、调试工具配置在前面章节有详细介绍。
硬件
硬件方面使用的是参考官方AT32F437 SURF板子而设计的一个AT32F403A开发板,板子上的芯片是AT32F403AVGT7的型号,开发板上面还板载了一个atlink-ez的仿真器,atlink-ez除了可以在线仿真和下载之外还有一个串口的功能,硬件上是通过跳线帽接到了MCU的串口1,pa9/10上面。
如下图是开发板pcb图,以及硬件资源。(左边上角的就是atlink-ez,用usb线接到pc即可):
如下为实物图:
本章是rtc日历功能的测试,属于内部资源,使用到了外部低速时钟,外部低速时钟原理图:
RTC
实时时钟用于日历时钟功能,内部为一个 32 位递增计数器,通常使用中该计数器 1 秒增加 1,也就是该 计数器相当于秒钟,然后根据当前的秒钟值,通过转换得到时间和日期,实现日历的功能,修改计数器的 值便可修改时间和日期。 RTC计数逻辑位于电池供电域,只要 VBAT 有电,RTC 便会一直运行,不受系统复位以及 VDD 掉电影响。
主要特性:
20 位预分频器。
32 位计数器,用于时间计数。
3种不同时钟源:HEXT/128、LEXT、LICK
3个中断:秒中断、闹钟中断、溢出中断
注:RTC 时钟的频率必须小于 PCLK1 时钟频率的四分之一。
软件
上电复位后所有 RTC 寄存器处于写保护状态,需要先解除写保护,才能写 RTC 寄存器,所以需要先解锁,然后对rtc寄存器进行配置。配置包括时钟配置,以及时间设置。时钟方面使用的外部低速晶振32.768k,然后设置时钟分频系数为32768,那么rtc的工作频率就是1hz,那么计数寄存器的值自加1就是1s的时间。
解锁步骤:
使能电源和电池供电域接口时钟,解锁电池供电域写保护。
配置过程:
1. 等待寄存器同步完成(CFGF 位置 1)。
2. 进入配置模式(CFGEN 位置 1)。
3. 根据需要配置相关 RTC 寄存器。
4. 退出配置模式将(CFGEN 清 0)。
5. 等待寄存器同步完成(CFGF 位置 1)。
初始化代码:
测试
测试代码
初始化设置初始时间为2023.08.01, 10:51:0,主循环中获取秒的状态,然后获取rtc的时间并打印出来。
测试结果
把串口助手的时间截打开,可以看到确实是每秒打印一次,测试通过。
————————————————
版权声明:本文为CSDN博主「qi_feng_le」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qi_feng_le/article/details/132161295
|