嵌入式技术论坛
直播中

贾桂林

7年用户 1475经验值
私信 关注
[经验]

在RT-Thread系统上开启RTC驱动模块

前言
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 时间是不包含时区的,时间戳都是不包含时区的
如下:时间戳转换成【北京时间】



原作者:张世争

更多回帖

发帖
×
20
完善资料,
赚取积分