CubeMX 配置
-
打开外部时钟

-
激活时钟和日历

-
更改RCC时钟为外部低速时钟

以上在CubeMX中的配置就已经完成,点击生成代码即可。
4.这里我需要使用串口进行调试,因此打开了串口一

工程修改
以上配置后,RCC可以正常走时运行,但是当单片机复位后,RCC时钟会清零,这可不符合我们的目的。
因此,在RCC初始化函数中我们添加这两行代码:
开启BKP备用寄存器时钟和取消其写保护。

之后在我们添加55行56行57行和83行代码进行是否第一次设置时间进行判断,如果是第一次进行时间的初始化,然后将标志位改变,之后无论如何操作,复位,关闭电源,这个标志位都不会改变。

实现基本时间走时并读取
- 在主函数中定义两个保存时间和数据的结构体,并配置时间和日期等数据

- 写入时间数据
HAL_RTC_SetTime(&hrtc, &RtcTime, RTC_FORMAT_BIN)
HAL_RTC_SetDate(&hrtc, &RtcDate, RTC_FORMAT_BIN)
- 读取时间数据
HAL_RTC_GetTime(&hrtc, &RtcTime,RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &RtcDate,RTC_FORMAT_BIN);

本文档介绍了如何在STM32CubeMX中配置外部时钟源,激活时钟和日历,并切换到外部低速时钟。重点在于解决单片机复位后RCC时钟清零的问题,通过开启BKP备用寄存器并设置标志位,确保复位后时钟依然保持。此外,还展示了如何使用串口进行调试,并详细说明了如何利用HAL库设置和获取RTC时间及日期,确保时间的准确读取和更新。
2577

被折叠的 条评论
为什么被折叠?



