第十三届蓝桥杯嵌入式备赛-STM32G431-进阶模块调试⑦RTC时钟
目录
0.前言
1.功能要求
2.STM32Cubemx初始化
3.程序实现
main.c相关初始化
RTC函数
RTC_CalendarGet()日期时间获取函数
设置日期RTC_SetDate和时间RTC_SetTime
4.工程文件
0.前言
这套教程针对于蓝桥杯嵌入式比赛的底层模块调试,针对于比赛进行每个模块的调试,低层模块调试好,对于赛题的实现就会方便很多,虽然有一些应试教育的意味,不过准备这个比赛对于程序整体实现思维还是有着很大帮助,我也从中受益颇多!
1.功能要求
使用STM32G431内置的RTC时钟进行计时,获取每时每刻的时间值,同时实现时间和日期的设置。
2.STM32Cubemx初始化
开启RTC时钟
RTC详细设置
3.程序实现
main.c相关初始化
main.c中创建RTC相关变量
/*main.c*/uint16_t RTC_tt=0;//RTC获取时间计时标志位
uint16_t RTC_Ref=0;//RTC获取时标志位
uint16_t RTC_HH=0,RTC_MM=0,RTC_SS=0;//获取时间变量
uint16_t RTC_Year=0,RTC_Month=0,RTC_Day=0;//获取日期变量
Task_Time()函数扩充,以执行定时获取RTC值(移步②,查看该函数)
/*main.c*/void Task_Time(void)
{if(++Key_tt==10) {Key_tt=0;Key_Ref=1;}//按键扫描计时if(++Lcd_tt==200) {Lcd_tt=0;Lcd_Ref=1;}//LCD刷新计时if(++ADC_tt==300) {ADC_tt=0;ADC_Ref=1;}//ADC读取计时if(++MCP_tt==200) {MCP_tt=0;MCP_Ref=1;}//MCP写入计时if(++DAC_tt==200) {DAC_tt=0;DAC_Ref=1;}//DAC输出计时if(++RTC_tt==1000) {RTC_tt=0;RTC_Ref=1;}//RTC获取计时
}
主循环中添加判断程序(RTC_CalendarGet();之后会讲到)
/*main.c*/ while (1){if(RTC_Ref==1){RTC_Ref=0;//清除标志位RTC_CalendarGet();}}
RTC函数
在rtc.c中定义以下函数(函数讲解查看注释),并在rtc.h中声明
/*rtc.h*/void RTC_CalendarGet(void);
void RTC_SetTime(uint16_t HH,uint16_t MM,uint16_t SS);
void RTC_SetDate(uint16_t Year,uint16_t Month,uint16_t Day);
RTC_CalendarGet()日期时间获取函数
声明外部变量
/*rtc.c*/extern uint16_t RTC_HH,RTC_MM,RTC_SS;//获取时间变量
extern uint16_t RTC_Year,RTC_Month,RTC_Day;//获取日期变量
RTC_CalendarGet()编写
/*rtc.c*/void RTC_CalendarGet(void)
{RTC_TimeTypeDef stimestructureget;//定义时间获取结构体RTC_DateTypeDef sdatestructureget;//定义日期获取结构体/*应该先获取时间后获取日期*/HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);//获取时间HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);//获取日期/*获取日期时间到自己的变量*/RTC_HH=stimestructureget.Hours;RTC_MM=stimestructureget.Minutes;RTC_SS=stimestructureget.Seconds;RTC_Year=sdatestructureget.Year;RTC_Month=sdatestructureget.Month;RTC_Day=sdatestructureget.Date;}
设置日期RTC_SetDate和时间RTC_SetTime
RTC_SetTime函数中的内容之就在rtc.c中的MX_RTC_Init()函数内容进行修改即可,读者可以自行进行查找和对比
/*rtc.c*/void RTC_SetTime(uint16_t HH,uint16_t MM,uint16_t SS)
{RTC_TimeTypeDef sTime = {0};sTime.Hours = HH;sTime.Minutes = MM;sTime.Seconds = SS;if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}}
RTC_SetDate函数中的内容之就在rtc.c中的MX_RTC_Init()函数内容进行修改即可,读者可以自行进行查找和对比
/*rtc.c*/void RTC_SetDate(uint16_t Year,uint16_t Month,uint16_t Day)
{RTC_DateTypeDef sDate = {0};sDate.Month = Month;sDate.Date = Day;sDate.Year = Year;if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}}
相关函数定义位置stm43g4xx_hal_rtc.c
/*stm43g4xx_hal_rtc.c*/HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);
HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format);
在Task.c中声明外部变量,就可以通过该变量获取时间啦
/*Task.c*/extern uint16_t RTC_HH,RTC_MM,RTC_SS;//获取时间变量
extern uint16_t RTC_Year,RTC_Month,RTC_Day;//获取日期变量
4.工程文件
该工程文件为全10讲所有内容,可以作为参考,不过还是希望读者能够自己手敲一遍,加深记忆
链接:https://pan.baidu.com/s/1LcNszc7_oHWvXcucCezlxg?pwd=hw07
提取码:hw07
自己做的笔记,也希望能对你有帮助!
第十三届蓝桥杯嵌入式备赛-STM32G431-进阶模块调试⑦RTC时钟相关推荐
- 第十三届蓝桥杯嵌入式备赛-STM32G431-基础模块调试①LED/LCD调试
目录 0.前言 时钟设置 项目设置 1.功能要求 电路原理图 2.STM32Cubemx初始化 3.程序实现 LCD LED 编写LED灯亮灭的相关函数 LED关闭函数 LEDx开启函数 LEDx关闭 ...
- 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解
文章目录 原题展示 原题分析 详细题解 LED模块 按键模块 串口 LCD模块 模拟电压读取(ADC) 脉冲输入输出 文章福利 原题展示 原题分析 本届国赛试题主要包含LCD.LED.按键.EEP ...
- 蓝桥杯嵌入式|第十三届蓝桥杯嵌入式省赛程序设计试题及其题解
题目 十三届省赛是要制作一个可由串口设置密码的密码锁.在本场比赛中,我们将用到LED模块.按键模块.串口模块.定时器的PWM模块以及官方会提供源码的LCD模块.下面就请看原题: 题解 ...
- 第十三届蓝桥杯嵌入式省赛真题演练——密码锁
题目分析 接下来站在博主的视角来完成这次模拟题.首先,通读题目后我大致能大致能获取到如下信息:要完成一个密码锁的项目,用户通过串口通讯来设置三位密码,使用按键来输入密码.那我的思路先根据硬件框图搭出程 ...
- 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛客观题以及详细题解
题1 概念题. USRAT:异步串口通信,常用于数据传输: SW-DP:SWD 的全称应该是 The Serial Wire Debug Port (SW-DP),也就是串行调试端口,是 ARM 目前 ...
- 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛(第二场)程序设计试题及其题解
原题展示
- 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛客观题以及详细题解
题1 题解: 概念题. MCO引脚,是单片机对外提供时钟的引脚. HSE,高速外部时钟信号,时钟源由外部晶体/陶瓷谐振器与外部时钟: HSI,高速的内部时钟,由内部8MHz的RC振荡器产生,可直接 ...
- 2021年 第12届 蓝桥杯【备赛直播公开课 —— 软件类(本科组、高职高专组)】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...
- 第十三届蓝桥杯大赛软件赛省赛真题
第十三届蓝桥杯大赛软件赛省赛Java 大学 B 组 文章目录 第十三届蓝桥杯大赛软件赛省赛Java 大学 B 组 [考生须知] 试题 A: 星期计算 试题 B: 山 试题 C: 字符统计 试题 D: ...
最新文章
- Reporting Services 的多值参数究竟能否用在数据集获取途径为存储过程的情景呢?...
- CSS和JS样式属性对照表
- python编程爱因斯坦的问题_教你如何用编程解决爱因斯坦的数学问题
- hadoop的datanode多磁盘空间处理
- python如何在循环中保存文件_Python中如何将爬取到的数据循环存入到csv文件中?...
- C#应用程序单例并激活程序的窗口 使其显示在最前端
- 除阿里、网易和字节外,杭州居然还有这么多互联网公司!
- cmd切换为administrator用户
- 富士康已看到芯片短缺开始缓解迹象 预计下半年会有改善
- std::lexicographical_compare
- 动态规划解决分割问题
- CentOS 6.9 下安装DB2
- Android系统上使用ANMPP搭建Nginx+PHP+MySQL+FTP服务(以天猫魔盒TMB100A为例)搭建网站
- 华三交换机如何进入配置_h3c交换机配置telnet配置教程
- 八大远程控制软件排行,Teamviewer替代软件
- 天气 经纬度 高德_高德获取经纬度与对应地区(思路:先获取经纬度 ---再通过经纬度获取地址)...
- eclipse打不开,提示出现“eclipse发生了错误,请参阅日志文件”
- 百度坐标批量转换成WGS84坐标
- word2vec利用词向量进行中文新闻标题相似度分析
- html5 运动轨迹绘画,html5 canvas行星运动轨迹动画特效
热门文章
- 银行信贷管理学试题库【1】
- 【iOS高级资深工程师面试篇】①、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 UI部分2/3 -图像显示原理-UI卡顿掉帧
- FFmpeg入门详解之2:音视频到底是什么
- Pandas 学习笔记一
- 机器学习2:——Pandas——2:DataFrame运算
- Fiio Q1的线性输入无法调节音量的问题
- 科教导刊杂志科教导刊杂志社科教导刊编辑部2022年第27期目录
- 二分查找的时间复杂度以及算法
- request.getSession.setAttribute和request.setAttribute区别
- c语言二进制转换八进制