基于RT-Thread的STM32F4开发第七讲——RTC(硬件、软件)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

本章是基于RT-Thread studio实现RTC硬件和软件下的日历时钟功能,开发板是正点原子的STM32F4探索者,使用的RT-Thread驱动是5.1.0。

有关于RTC的介绍和cubemx配置参数含义可以看看这篇文章
基于STM32F4的cubemx关于RTC配置说明


一、RT-Thread工程创建

从以前文章得到驱动5.1.0不报错工程

1.硬件RTC配置

先按照/* RTC CONFIG BEGIN */的STEP的1、2、3配置一下。注意先不要使用软件模拟RTC,先使用硬件模式。如果你目前的开发板没有硬件RTC,那么也先这么操作。

如果不出意外,你将会得到以下的报错和警告

第一处错误,对于5.1.0版本来说,RT_WEAK改成了小写rt_weak,我们改过来。吐槽一下,RT-Thread studio的编译,报错信息一点都不准。

改正后,报错减少。这里的错误是参数类型不匹配的错误。

结构体参数如下

c 复制代码
struct rt_rtc_ops
{
    rt_err_t (*init)(void);
    rt_err_t (*get_secs)(time_t *sec);
    rt_err_t (*set_secs)(time_t *sec);
    rt_err_t (*get_alarm)(struct rt_rtc_wkalarm *alarm);
    rt_err_t (*set_alarm)(struct rt_rtc_wkalarm *alarm);
    rt_err_t (*get_timeval)(struct timeval *tv);
    rt_err_t (*set_timeval)(struct timeval *tv);
};

报错函数参数如下

c 复制代码
static rt_err_t stm32_rtc_get_secs(void *args)
static rt_err_t stm32_rtc_set_secs(void *args)
static rt_err_t stm32_rtc_get_timeval(void *args)

可以看到形参不匹配,把函数形参改过来就行

c 复制代码
static rt_err_t stm32_rtc_get_secs(time_t *args)
static rt_err_t stm32_rtc_set_secs(time_t *args)
static rt_err_t stm32_rtc_get_timeval(struct timeval *args)

这样,就没有报错和警告了。接下来按照手册上函数**set_date() set_time()**来设置日期和时间也不会有问题。

下载后,可以看到硬件RTC正常工作。

2.软件RTC配置

去设置里面打开软件RTC。编译有一个警告说结构体rtc_sync_work 没有使用,这不影响。

下载下去,msh控制台反馈报错,我们可以看到报错文件时drv_rtc,内容是rtc创建错误。

我们找到报错语句,可以看到,这里是设备名称时 "RTC" ,但是现在使用软件模拟RTC,那么设备名称将变成 "soft_rtc",更改一下,发现下载后控制台不报错。可以和硬件定时器一样正常使用

3.RTC闹钟配置

目前RT-Thread好像并没有晚上闹钟alarm的配置,我也尝试着自己配置了一下,但是一直不成功。确实,之前裸机操作时也没有关心过RTC,对RTC的硬件基础理解不够,有些地方无从下手了。在RT-Thread的论坛有很多博主有关于这方面的文章,实在有需要可以看看他们的。


总结

本章是基于RT-Thread studio实现RTC硬件和软件下的日历时钟功能,对于闹钟功能还未实现,哪天实现了,再补充。

相关推荐
明早你自己说1 天前
RT-Thread 在SD卡实现ulog+时间戳保存不同日志方法
stm32·rt-thread·ulog
嵌入式老牛8 天前
DrvBsp_I2C驱动_RTC(一)
单片机·嵌入式硬件·rtc
嵌入式老牛9 天前
【无标题】
单片机·嵌入式硬件·rtc
Felven10 天前
统信系统下设置RTC时间
linux·rtc·1024程序员节
Silicore_Emma16 天前
芯谷科技--I²C 串行实时时钟,为系统提供持久、精准的时间基准D1307
科技·实时音视频·低功耗·rtc·时间基准解决方案·双电源
macheria16 天前
Qualcomm SM6115 平台RTC accuracy problem
rtc·qualcomm·sm6115·qcm4290
学生董格1 个月前
[嵌入式embed]Keil5-STM32F103C8T6(江协科技)+移植RT-Thread v3.15模版
stm32·嵌入式硬件·rt-thread·keil5·江协科技
涂山苏苏⁠2 个月前
STM32之RTC
stm32·rtc
ZEGO即构开发者2 个月前
简单4步,快速搭建数字人实时视频通话功能
实时互动·webrtc·实时音视频·数字人·即时通讯·rtc·视频聊天·虚拟人·社交·音视频技术·ai虚拟人·ai语音驱动·android多人语音·java多人语音通话·zego·泛娱乐·社交泛娱乐·视频美颜·虚拟形象sdk·自动聊天机器人
芯片小熊3 个月前
RTC时钟详解
单片机·嵌入式硬件·实时音视频·时钟·rtc