电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
RT-Thread学习笔记+5.RTT组件之RTC
分 享
扫描二维码分享
RT-Thread学习笔记+5.RTT组件之RTC
RTT
RTOS
RTC
川楠
关注
发布时间: 2020-06-03
丨
阅读: 2260
## 摘要 RTC(Real_Time Clock)实时时钟,有时候在项目必不可少。 在上一篇文章[《RT-Thread学习笔记+4.RTT组件之SDIO接口文件系统》](http://www.icxbk.com/article/detail/1360.html "《RT-Thread学习笔记+4.RTT组件之SDIO接口文件系统》")中,我注意到在使用到文件系统创建文件时间竟然是2098年,这显然太夸张了,所以我决定试试RT-Thread提供的RTC组件。 ENV工具:env_released_1.1.3 RTT版本:rt-thread-v4.0.1 ## 硬件情况 关于RTC实时时钟所需的硬件,有专门的RTC芯片,如DS1302,DS1307,PCF8563等等。也有单片机提供的RTC硬件外设。 专用的RTC芯片,一般大多说使用的是I2C接口,这个之前我也用到个I2C组件。 单片机自带的RTC硬件外设,很遗憾的是,我在设计电路板时候,并没有设计低频时钟和外接电池。所以,最后,我只能使用软件仿真RTC设备 MCU采用的是STM32F103RCT6芯片,TF卡使用的SDIO接口。 本次主要的目的就是,让RTC跑起来,并给赋值时间,读出打印时间,在TF中创建的文件,文件名按照时期+时间的方式。文件内容按照时间加数值的方式,一行一行的写入TF卡中,方便EXCL表格分析。 ## 文件系统组件添加 本次使用的是基于《RT-Thread学习笔记+4.RTT组件之SDIO接口文件系统》文章移植成功的RTT工程。 进入MDK工程目录下,打开ENV配置界面,通过menuconfig进入到图形配置界面,依次进入RT-Thread Configuration → RT-Thread Components → Device Drivers菜单,开启RTC,如下图红色圈起来的。 ![](https://cf03.ickimg.com/bbsimages/202006/94361db3a93c98e85dec36c29afcb967.jpg) 保存配置,使用命令:scons --target=mdk5,生成MDK5工程。 ![](https://cf03.ickimg.com/bbsimages/202006/cd789364a09e66c816415d37bf348954.jpg) 打开Keil工程,将生成的程序进行编译和下载。 ![](https://cf03.ickimg.com/bbsimages/202006/cb71bb3a1233aaa5e0e430b2ca54f896.jpg) 进入到调试串口,查看设备列表,以及data命令。 ![](https://cf03.ickimg.com/bbsimages/202006/2c7d8c00319aa9cb059e2effa215a5b5.jpg) 经过上面的操作,其实RTC的组件已经基本上介绍完了,时间赋值,RTC也成功的运行起来了,当然,设备断电之后,时间还是依然会丢失。 因为我们没有使用外部的RTC芯片,或者单片机的RTC外设(硬件没有设计低频时钟和电池),但是这不影响我们后续的测试和使用,大不了我不断电嘛。 ## RTC组件的拓展使用 在我们实际项目开发的时候,不能每次使用调试串口赋值,所以需要自动给RTC组件赋值时间。 ![](https://cf03.ickimg.com/bbsimages/202006/a576c083826ca015f4af479c9a564e88.jpg) 下载到单片机测试结果如下: ![](https://cf03.ickimg.com/bbsimages/202006/f771b4c92b28234812250f731b40d2ab.jpg) 如果大家使用STM32单片机的RTC外设作为断电后时间保持计数,我建议在RTC计数器里面存入UTC时间数据,具体的实现方法和原因,参见文章[《单片机的UTC时间时区转换》](http://www.icxbk.com/article/detail?aid=237 "《单片机的UTC时间时区转换》") 下面写个函数,主要实现在TF卡的根目录下,以当前日期创建一个.text文件。 并按行写入随机生成的随机数。 ![](https://cf03.ickimg.com/bbsimages/202006/1d82be352824fd6da8f8dbcf1f0b4c59.jpg) ![](https://cf03.ickimg.com/bbsimages/202006/225270346474cb1ac28763c4b10b1e90.jpg) 编译并下载到电路板中,打开调试串口。 ![](https://cf03.ickimg.com/bbsimages/202006/db230b3aec61c382d4183f84c6a2265b.jpg) 接来下,就是拆下我TF,拿到电脑上去查看下: ![](https://cf03.ickimg.com/bbsimages/202006/24a99e0e43b100296677967ff1ca6aac.jpg) 可以看到文件的生成时间是正确的。 打开文件文件: ![](https://cf03.ickimg.com/bbsimages/202006/c800ab7ac1b41fbcf45de6d5a99b3516.jpg) 第一行怎么多了一点?好像不是按照我的思路来着,在看看代码! ![](https://cf03.ickimg.com/bbsimages/202006/a822faa5a2793ee679f47dae1574076f.jpg) 原来如此,我在打开文件的时候多写了一次,这下明白了。 ## 结语 纯软件的RTC时钟,在STM32上其实蛮准的,一天跑下来几乎分秒不差,主要是我没有感觉到明显的时间偏差。这点不像我以前使用DS1307模块(TB买的),一天下来误差几分钟到十几分钟。 好了,本次关于RTC相关的就到此结束,情有终,义还在,大家江湖再见!
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
川楠
擅长:单片机综合应用 硬件设计
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交