嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟

系列文章目录

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记03:G4时钟结构

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记04:从零开始创建工程模板并开始点灯

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记05:Systick滴答定时器

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记06:按键输入

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记07:ADC模数转换

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记08:LCD液晶屏

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记09:EEPROM

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记10:USART串口通讯

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记11:数字电位器MCP4017

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记13:RTC实时时钟

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记14:PWM捕获

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记15:PWM输出

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记16:蓝桥杯编程手册


目录

系列文章目录

前言

一、基础知识

二、程序设计

1.CubeMX初始化

2.程序设计


前言

RTC是集成在STM32G4内部的一个模块,我们通过对寄存器的一些配置和读取就可以让他工作在实时时钟的计时模式。

一、基础知识

G4的实时时钟是一个独立的BCD码定时器和计数器,所谓的BCD码就是用一个二进制数来表示十进制数,比如0x59就对应59,也就是十六进制和十进制数的数字是一样的,它的内部有一个编码。可以提供时间(日期、年等)信息以及可编程的两个闹钟(Alarm)的中断。

只要外部电压还在供电,RTC就不会停止计数,计时在中断中或是复位状态。

它还可以自动校正闰年。也有自校准功能可以校准时钟。也可以设置为12小时制或者24小时制。年月日时分秒都用BCD码编码放在各自的寄存器

二、程序设计

1.CubeMX初始化

在CubeMX中启动RTC的时钟、日历功能。在Timers里面找到RTC,勾选Activate Clock Source和Activate Calendar。闹钟这里就不用了。

然后我们配置一下Configuration。第一个是时钟格式,可以配置成24小时制或12小时制。然后下面是两个分频(分频两次得到我们要的频率)。

我们把RTC的时钟配置成1Hz,这样的话就一秒钟走一次。因为RTC的时钟来源默认是LSI,也就是32KHz,所以我们把第一个分频设置成31,第二个分频配置成999,这样就把32KHz分频成1Hz了。(不能是32和1000,因为是从0开始的。)

后面的时、分、秒就设置成23、59、59就可以了。

在下面是一个夏令时的设置(夏天时间往前拨一个小时),我们这里就不用了,因为中国不用夏令时。

再下面就是配置一下当前的年月日周,我们按照自己想法配置就可以了。

然后我们生成工程就好了。

2.程序设计

我们看到rtc.c已经自动给我们生成好了,并且已经自动帮我们初始化好了,然后我们就可以调用HAL_RTC_GetTimeHAL_RTC_GetDate获取时间和日期了。

HAL_RTC_GetTime有三个变量,第一个是结构体变量,我们直接用&hrtc就好了,第二个是返回的时间的结构体,这个在rtc.c中就有,找到RTC初始化定义void MX_RTC_Init(void),下面第一个就是定义了一个sTime,我们模仿他的格式写成RTC_TimeTypeDef rtc_time;就是我们要用的了。

然后我们把结构体作为参数,&rtc_time,第三个参数是形式,我们用RTC_FORMAT_BIN。

//RTC
RTC_TimeTypeDef rtc_time;
void RTC_Process()
{
	HAL_RTC_GetTime(&hrtc,&rtc_time,RTC_FORMAT_BIN);
}

这样就可以把时、分、秒返回到rtc_time这个结构体里面了。

然后我们把RTC_Process()在主循环里面调用就可以。我们可以把它显示在LCD上面。

RTC_TimeTypeDef rtc_time;
void RTC_Process()
{
	HAL_RTC_GetTime(&hrtc,&rtc_time,RTC_FORMAT_BIN);
}
u8 buf[20];
void LCD_Process()
{
	LCD_SetBackColor(Black);
    LCD_SetTextColor(White);
	sprintf((char*)buf,"   %2d,%2d,%2d",rtc_time.Hours,rtc_time.Minutes,rtc_time.Seconds);
	LCD_DisplayStringLine(Line1,buf);
}

注意这里的时、分、秒的变量分别是rtc_time.Hours、rtc_time.Minutes、rtc_time.Seconds。前面是我们定义的结构体,然后加个点号,后面的就自动出来了。

日期同理:

RTC_TimeTypeDef rtc_time;
RTC_DateTypeDef rtc_date;
void RTC_Process()
{
	HAL_RTC_GetTime(&hrtc,&rtc_time,RTC_FORMAT_BIN);
	HAL_RTC_GetDate(&hrtc,&rtc_date,RTC_FORMAT_BIN);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537152.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PAN1026蓝牙收发芯片

1 概述 PAN1026 系列产品是一款低成本、高集成度的无线 BLE 数据收发芯片,工作在射频 2400MHz ~2483MHz 的通用 ISM 频段。具有较低的系统应用成本,只需要一个 MCU 和少量外部无 源组件即可构建满足无线应用的系统。同时,操作方式非…

七大免费SSL证书获取方法

为了保护用户数据的安全,越来越多的网站开始使用SSL证书。SSL证书是一种数字证书,它能够为网站提供一个安全的加密连接,从而保护用户的敏感信息。然而,购买SSL证书需要一定的费用,这对于一些小型企业或个人来说可能是一…

C++ | Leetcode C++题解之第23题合并K个升序链表

题目: 题解: class Solution {// 21. 合并两个有序链表ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) {auto dummy new ListNode(); // 用哨兵节点简化代码逻辑auto cur dummy; // cur 指向新链表的末尾while (list1 && list2) {if (list1…

test4121

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

强化学习基础概念入门

文章目录 1. 什么是强化学习?2. 强化学习的基本元素3. 相关衍生元素3.1 策略(Policy)3.2 状态转移(State Transition)3.3 回报(Return)3.4 价值函数(Value Function) 4. 算法分类4.1 按环境是否已知划分4.2 按学习方式划分4.3 按学习目标划分 参考资料 1. 什么是强化…

本地开发nginx代理服务器(2024-04-10)

1、nginx 解释 nginx 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。 在性能上,Nginx占用很少的系统资源,能支持更多的并发连接,达到更高的访问效率; 在功能上,Nginx是优…

QT:QMainWindow、ui界面、资源文件的添加、信号和槽

1.练习:使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(…

OJ 古籍翻译 【进制转化】【C】

这里有两个考察点,一个是进制转换,还有一个是以字符串输出 知识点: sprintf(参数一,参数二,参数三) 将参数三按参数二的格式转换后存入参数一中 sprintf与printf用法基本一样,只是sprintf是将值打印到指…

SketchBook2014 下载地址及安装教程

SketchBook是一款专业级别的绘图与绘画软件。它提供了丰富的绘画工具和创意功能,适用于艺术家、插画师、设计师和数字艺术爱好者。SketchBook具有直观的用户界面,简单而强大的绘制工具,能够帮助用户在数字平台上创造出精美的艺术作品。 Sket…

哪些工作不会被AI替代:人类能力地形图

这一轮AI,到底对人有多强的替代性?这一轮AI的可靠性,是之前任何一代所谓的人工智能都不能比的。 在国内,AI开始被用来筛选简历,而在国外,亚马逊正在用算法跟踪仓库工人的生产率,顺道还会给生产率…

橘子学JDK之JMH-02(BenchmarkModes)

一、案例二代码 这次我们来搞一下官网文档的第二个案例,我删除了一些没用的注释,然后对代码做了一下注释的翻译,可以看一下意思。 package com.levi;import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import …

RocketMQ之Topic和Tag最佳实践

一、Topic是什么?它的作用? Topic即主题,是消息队列中用于对消息进行分类和组织的一种机制,它有以下三种作用: 标识消息分类:RocketMQ的主题用于对消息进行分类和组织。通过为不同类型的消息分配不同的主题…

LeetCode-Java:6.Z字形变换

文章目录 题目解① 找规律 题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: P A H N A P L S I I G Y I R之后&a…

2024Mathorcup(妈妈杯)数学建模C题python代码+数据教学

2024Mathorcup数学建模挑战赛(妈妈杯)C题保姆级分析完整思路代码数据教学 C题题目:物流网络分拣中心货量预测及人员排班 因为一些不可抗力,下面仅展示部分代码(很少部分部分)和部分分析过程,其…

[python] Numpy库用法(持续更新)

先导入一下 import numpy as np 一、np.random用法 生成随机整数:np.random.randint(low, high, size) low: 最小值high: 最大值size: 生成的数组大小(可以是多维,下面同理) 生成随机浮点数:np.random.uniform(low, …

下线圈和包扎

电机槽内放好 所有槽纸 槽内再放入引槽纸 作用是放线圈的时候避免划伤线 开始放线圈 绑了白色扎带的朝外面 线圈的一边放进去后,另一边还悬在外面 ,这里俗称 吊边。 为了保护吊边 ,在吊边处放一张大的绝缘纸 (如下图&#xff0…

32.WEB渗透测试-数据传输与加解密(6)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:31.WEB渗透测试-数据传输与加解密(5) 关于discuz3.5的源码内容和…

C++STL--谓词

谓词 ① 可调用的表达式称为谓词,包括仿函数,自定义函数,lambda表达式。 ② 接受一个参数的谓词,称为一元谓词。 ③ 接受两个参数的谓词,称为二元谓词。 可调用的表达式:对于一个对象或者表达式,如果可以使用调用运算符(),就称它为可以调用的。 一元谓…

java混淆的重要性分析

Java代码混淆是一种常用的安全技术,它通过对Java代码进行变换和重命名,使得源代码变得难以理解和逆向工程,从而增强代码的安全性。以下是对Java混淆重要性的分析: 保护知识产权:Java混淆可以防止恶意用户或竞争对手轻易…

macos 查看 远程服务器是否开放某个端口

想要使用mac查看远程服务器某个端口是否开发&#xff0c;可通过 nc 命令&#xff0c;如下&#xff1a; nc -zv <服务器IP> <端口号>如果该端口开发&#xff0c;结果为&#xff1a;succeeded! Connection to <服务器IP> port <端口号> [类型] succeed…