前言
- RT-Thread 的驱动框架里有RTC,基于STM32 的BSP,有现成的RTC驱动,STM32本身有ST 官方的RTC HAL 支持,所以如果STM32的BSP上开启RTC,简单配置一下即可
- RTC 也就是实时时钟,开启后,可以轻松的设置日期时间与获取日期与时间,可以基于RTC开启闹钟功能等
开发环境
- stm32l476-st-nucleo开发板,基于STM32L476RG
- RT-Thread 4.1.0
- Keil MDK5
操作步骤
- 这里可以搭建一个 stm32l476-st-nucleo 的最小RT-Thread 系统
- RTC 模块主要包括:RTC 驱动、RTC框架文件、RTC ST HAL库三部分,RT-Thread EVN menuconfig 配置,开启 RTC驱动后,会自动把 RTC框架文件与 ST RTC HAL库文件包含进去,所以开启方法非常的简单
- 这里需要注意:板子的RTC 时钟源是外部的32768Hz晶振,还是STM32内部的LSI时钟源
- 开启RTC驱动后,RTC框架自动开启了
功能验证
- RT-Thread ENV 工具: 运行:
scons --target=mdk5
,重新生成Keil MDK5的工程 - 打开工程,发现RTC相关的文件,都包含进来了
- 编译下载,打开串口终端,输入:
date
命令,可以查看系统的日期时间 - 可以使用 shell 命令:
date
修改系统的时间
msh >date 2022 05 31 20 34 00 /* 修改系统(开发板)的时间 */
old: Tue May 31 20:33:55 2022
now: Tue May 31 20:34:00 2022
msh >date /* 显示系统(开发板)的时间 */
local time: Tue May 31 20:34:01 2022
timestamps: 1654000441
timezone: UTC+8
小结
- STM32 平台RTC 的功能,因为RT-Thread 适配的很好,所以基本上配置好就可以正常使用了
- 后面再开启RTC Alarm 闹钟框架,实现定时闹钟功能
- 这里需要了解一个事实:RTC的时间,或者说是实际戳,是UTC时间,也就是不包含【时区】的
- shell 命令:
date
显示与设置的时间,是包含【时区】的,但底层的 RTC 时间是不包含时区的,时间戳都是不包含时区的 - 如下:时间戳转换成【北京时间】 https://tool.lu/timestamp