【NUCLEO H533RE】之五 时钟功能测试
一、打开stm32cubeide,配置时钟
RCC配置HSE和LSE 外部晶体
RTC选择Activate Clock Source(时钟源)和 Activate Calendar(日历)
检查时钟配置(Clock Config) 选LSE
时钟和日历,可以在这里配置,也可以在运行时设置
加入闹钟,下面就会出现闹钟的一些参数,可以在这里配置,也可以在运行时设置
闹钟的中断也可以选择
32.768的外部时钟就连接到RTC了,时钟日历也配置好了。
二、生成代码介绍
选择后保存产生代码。
main.c中就有了
rtc结构句柄
RTC_HandleTypeDef hrtc;
rtc初始化函数
如果勾了中断 xxxxx_it.c就有报警中断的添加
我们还可以调用rtc的其他函数
三、加入代码
因为选择了报警中断A,如果要处理这个中断主程序中就要添加这个回调函数(选择了其他中断就要加入其他中断的回调函数)。
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
{
}
如果选择了报警B或其他中断也是和这类似的处理。
关于回调函数,ST还提供了一个HAL_RTC_RegisterCallback来注册自己的回调函数,但还要配置USE_HAL_RTC_REGISTER_CALLBACKS 为1 .这个麻烦。还不如使用同名的回调函数省事。其实其他中断也有这操作 比如串口什么的。
关于时间和日历的设置,初始化里面有了,可以搬来照抄。
如何读出时间和日历,这个我们在stm32H5xx_hal_rtc.c里面都可以找到它们的原型。
最后在主程序中加代码
- 初始化中就设置了时间,日期,报警等等.
- 做一个串口读的命令解析:
读时间getdt +回车(0x0d)
设置时间sett 12 30 09 +回车(0x0d)
设置日期setd 2 08 02 2024 +回车(0x0d)
设置报警seta 11 35 00 1+回车(0x0d)
- 回调函数中加入读命令解析程序,如果有读命令,做个标记。
- 主程序中处理串口数据
- 发现有数据回应串口数据应答。
编译下载调试,实验验证:
谢谢
本文来自论坛,点击查看完整帖子内容。