嵌入式|蓝桥杯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);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Pytorch框架的CNN-LSTM模型在CWRU轴承故障诊断的应用

目录 1. 简介 2. 方法 2.1数据集 2.2模型架构 1. 简介 CWRU轴承故障诊断是工业领域一个重要的问题,及早发现轴承故障可以有效地减少设备停机时间和维修成本,提高生产效率和设备可靠性。传统的基于信号处理和特征提取的方法通常需要手工设计特征&…

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析

原文链接:基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601336&idx4&sn143be5669da8ad336a455a4cca3d4b6a&chksmfa820d5fcdf584491…

【机器学习】机器学习创建算法第6篇:线性回归,学习目标【附代码文档】

机器学习(算法篇)完整教程(附代码资料)主要内容讲述:机器学习算法课程定位、目标,K-近邻算法定位,目标,学习目标,1 什么是K-近邻算法,1 Scikit-learn工具介绍,2 K-近邻算法API。K-近邻算法,1.4 …

java的文件字节输出和输入流

字符集: public class test1 {public static void main(String[] args) throws UnsupportedEncodingException {//1:编码:String data"b你a2";byte[] bytes data.getBytes();//默认使用(UTF-8)进行编码&…

【七 (1)指标体系建设-构建高效的故障管理指标体系】

目录 文章导航一、故障概述1、故障:2、故障管理: 二、指标体系概述1、指标2、指标体系 三、指标体系构建难点1、管理视角2、业务视角3、技术视角 四、指标体系构建原则1、与战略目标对齐2、综合和平衡3、数据可获得性4、可操作性5、具体和可衡量6、参与和…

lua学习笔记20(lua中一些自带库的学习)

print("*****************************lua中一些自带库的学习*******************************") print("*************时间***************") --系统时间 print(os.time()) --自己传入参数得到时间 print(os.time({year2011,month4,day5})) --os.data(&qu…

00 【哈工大_操作系统】Bochs 汇编级调试方法及指令

本文将介绍一下哈工大李治军老师《操作系统》课程在完成Lab时所使用到的 Bochs 调试工具的使用方法。这是一款汇编级调试工具,打开调试模式非常简单,只需在终端下输入如下指令: 1、bochs 调试基本指令大全 功能指令举例在某物理地址设置断点…

Xxl-job执行器自动注册不上的问题

今天新建的项目要部署xxl-job,之前部署过好多次,最近没怎么部署,生疏了。部署完之后,服务一直没有注册到执行器管理里面,找了半天也没找到原因,看数据库里的xxl_job_registry表也是一直有数据进来。 后来看…

小白也能看懂的BEV感知(一)

1. 引言 随着人工智能技术的不断发展,自动驾驶越来越多地出现在我们的视野中,智能化和电动化已经成为汽车行业的主旋律。无论是从研究的角度还是从工程的角度来看,它都像是一个巨大的宝藏,等待着我们去探索。本文将介绍这一技术的…

从51到ARM裸机开发实验(009)LPC2138 中断实验

一、场景设计 中断的概念在《从51到ARM裸机开发实验(007) AT89C51 中断实验》中已经介绍过,LPC2138的Keil工程创建在《从51到ARM裸机开发实验(005)LPC2138 GPIO实验》中已经介绍过。本次使用LPC2138来实现一个这样的场景:四个LED依次亮灭,时间…

测试人必看,小程序常见问题

小程序是一种轻盈的存在,用户无需为了使用它而下载和安装。它依附于微信这个强大的平台,只需轻轻一扫或一搜,它便跃然屏上,随时服务。小程序为我们带来更多前所未有的惊喜和便利,以下分享关于小程序相关的热门问题。 …

Python关闭所有打开的Word文档并保存

先给出一个打开指定目录下的所有Word文档,并添加新内容,方便后面做关闭测试 import os import win32com.clientdirectory "D:/0test" # 要处理的目录路径 content_to_add "test text" # 要添加的内容# 创建 Word 应用程序对象 …

链表基础3——单链表的逆置

链表的定义 #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } Node; Node* createNode(int data) { Node* newNode (Node*)malloc(sizeof(Node)); if (!newNode) { return NULL; } newNode->data …

逆向IDA中Dword,数据提取

我们可以看见数据是这样的&#xff0c;第一个是1cc 但是我们shifte就是 这个因为他的数据太大了&#xff0c;导致高位跑后面去了 这个时候&#xff0c;我们右键——convert——dword 这样就可以提取到争取的数据了 比如第一个数据 0x1cc a0xcc b0x1 print(hex((b<<8…

HarmonyOS开发实例:【事件的订阅和发布】

介绍 本示例主要展示了公共事件相关的功能&#xff0c;实现了一个检测用户部分行为的应用。具体而言实现了如下几点功能&#xff1a; 1.通过订阅系统公共事件&#xff0c;实现对用户操作行为&#xff08;亮灭屏、锁屏和解锁屏幕、断联网&#xff09;的监测&#xff1b; 2.通…

ChatGPT新手指南:轻松写出专业论文

ChatGPT无限次数:点击直达 ChatGPT新手指南&#xff1a;轻松写出专业论文 在当今信息爆炸的时代&#xff0c;撰写一篇专业论文可能对许多人来说是一项繁重的任务。然而&#xff0c;有了最新的自然语言处理技术&#xff0c;如ChatGPT&#xff0c;写出优质的论文不再那么困难。C…

vmware安装ubuntu-18.04系统

一、软件下载 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1fK2kygRdSux1Sr1sOKOtJQ 提取码&#xff1a;twsb 二、安装ubuntu系统 1、把ubuntu-18.04的压缩包下载下来&#xff0c;并且解压 2、打开vmware软件&#xff0c;点击文件-打开 3、选择我们刚刚解…

6. Django 深入模板

6. 深入模板 6.1 Django模板引擎 Django内置的模板引擎包含模板上下文(亦可称为模板变量), 标签和过滤器, 各个功能说明如下: ● 模板上下文是以变量的形式写入模板文件里面, 变量值由视图函数或视图类传递所得. ● 标签是对模板上下文进行控制输出, 比如模板上下文的判断和循…

项目7-音乐播放器1+BCrypt加密

1.创建项目 1.1 引入依赖 1.2 yml相关配置 application.yml spring:profiles:active: prod mybatis:mapper-locations: classpath:mapper/**Mapper.xmlconfiguration:map-underscore-to-camel-case: true #配置驼峰⾃动转换log-impl: org.apache.ibatis.logging.stdout.StdO…

利他行为为什么没有被淘汰

利他行为在大多数情况下都是不利于个体生存的&#xff0c;个体很容易被淘汰&#xff0c;导致利他行为越来越少&#xff0c;但是事实上利他行为却持续而广泛地存在。这是因为生物既存在以个体为单位的进化&#xff0c;也存在以种群为单位的进化&#xff0c;利他行为能够使得种群…