系统时间不够精确?试试RTC(实时时钟)
01 什么是 RTC?
RTC(实时时钟)是 real time clock的简称,是一种计算机时钟,通常采用集成电路的形式,专门用于计时。自然地,它可以计算秒、分、小时、日、月甚至是年。RTC可以在个人计算机、嵌入式系统和服务器中找到,并且存在于任何可能需要精确计时的电子设备中。即使设备电源关闭,仍能通过电池或独立于系统的电源供电。
RTC 有哪些好处呢?
- 事实证明,RTC 比其他方法更精确——比如MCU的定时器。
- 它将主系统从时间紧迫的任务中解放出来。
- 它具有较低的功耗。
那么,如何在我们的OneOS中使用RTC呢,下面我们来一起操作一下吧。
02 工程配置及生成
以下配置均以万耦一代开发板(STML475)为例,配置硬件 RTC, 并生成工程。
Step 1 使用STM32CUBEMX配置硬件
1.打开 oneos\projects\xxxxx(project文件夹)\board\CubeMX_Config下 的 CUBE 工程文件(xxx.ioc);
2.在 CUBE 工程中进行 RTC 配置,如下图所示,红色框选中的地方依次选择RTC、勾选Activate Clock Source,然后点击③的Clock Configuration检查时钟选择,最后点击④的GENARATE CODE 生成代码;
确认是否修改时钟配置,如有修改,则使用CubeMX_Config\Src文件夹中main.c的void SystemClock_Config(void)替换掉同目录下bsp.c中的SystemClock_Config(void)。
Step 2 使用 Menuconfig 配置工程选项
1.在对应的 oneos\projects\xxxxx(project文件夹) 目录下打开OneOS-Cube工具,在命令行输入 menuconfig 打开可视化配置界面;
2.通过[↑]、[↓]按键、空格、enter键或向右方向键选择 Drivers->RTC 下的Using RTC drivers选项,如下所示:
(Top) → Drivers→ RTC [*] Using RTC drivers
3.Esc键退出menuconfig,注意保存所修改的设置。
Step 3 使用 Scons 构建工程
在上一步打开的OneOS-Cube 工具命令行中输入 scons --ide=mdk5重新构建keil工程。
03 工程编译及实现
1.打开对应的 oneos\projects\xxxxx(project文件夹) 目录下的 project.uvprojx 工程文件,此时即可在工程中添加相应的应用程序。
2.如下图所示,在打开的工程application 文件夹中右键选择Manage Project Items,按图示添加提供的rtc_test.c文件(路径:oneos\drivers\driver_test);
3.编译并下载工程,运行程序;
4.打开串口工具如xshell等,通信成功后,即可通过输入rtc_set_test设置RTC的时间,输入rtc_get_test可获取当前的时间;
5.通过修改rtc_test.c中所设置的时间,查看效果。
6.如不再使用RTC设备,可再次使用OneOS-Cube工具取消,在Drivers->RTC 下取消Using RTC drivers 的选择,保存设置后重新生成工程即可。
串口交互记录如下:
sh />rtc_get_test Sat Jan 1 00:30:20 2000 sh /> sh />rtc_set_test Mon Jun 1 09:30:03 2020 sh /> sh />rtc_get_test Mon Jun 1 09:30:05 2020 sh /> sh />rtc_get_test Mon Jun 1 09:30:10 2020

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
AICON 2022 “AI + 数据”分论坛即将开启
算法、算力和数据是人工智能三大核心要素,也是人工智能的三大基石。AI算法持续突破创新,模型复杂度指数级提升的同时,准确率和效率也在不断提高,在各个细分领域应用加速落地。随着芯片处理能力提升、硬件价格下降、神经网络模型优化,AI 算力也在大幅提升。与此同时,AI 产业级应用已经进入大数据、大模型时代。 数据量迎来爆炸式增长,对 AI 算法、系统的持续迭代会产生怎样的影响?AI 技术要如何通过海量精准的大数据和丰富明确的应用场景产生价值?当前 AI 数据开放现状如何,要怎么保障数据安全和数据合规?在 AICON 2022“AI +数据”分论坛上,众多 AI 及数据领域专家将共同探讨这些问题。 AICON 2022 由 LF AI& DATA基金会主办,将于 9 月 8 日在杭州举行。大会由一个主论坛以及“AI 框架与模型”“AI+数据”“AI 工程化”“昇思生态论坛”四个分论坛组成,聚焦 AI 前沿技术、产业化和商业化的动态。 届时,来自全球的人工智能领域顶尖科学家、行业专家及著名企业家将齐聚一堂,重点关注人工智能技术领域的行业变革与技术创新,共同围绕核心技术、行业落地、产业...
- 下一篇
文盘Rust -- 如何把配置文件打包到二进制文件里
在实际开发中,经常会遇到各种不同的配置文件。通常,程序运行的各种配置从外部读取,以增强应用配置的灵活性。java 生态中的 springboot 提供了这种设计的典范。springboot 的应用程序,默认通过 application.yml 加载配置。默认的 application.yml 文件打进 jar 包,如果想改变程序的行为,可以在jar 包的同级目录下创建 application.yml 文件或者通过参数指定配置文件位置。那么在 rust 生态里有没有办法把默认配置文件打包到二进制文件呢。 我们可以通过 [rust-embed](https://github.com/pyrossh/rust-embed) 第三方库来实现这一效果。 在实际开发中的典型场景是: 不指定任何配置文件时,使用默认配置文件;当应用程序同级目录下包含配置文件时加载该配置文件。 * 定义嵌入文件的位置及获取函数 src/resources/embed_resource.rs 中定义了嵌入文件的位置及获取函数 ```rust use rust_embed::RustEmbed; #[d...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2配置默认Tomcat设置,开启更多高级功能