目录

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时钟相关推荐

  1. 第十三届蓝桥杯嵌入式备赛-STM32G431-基础模块调试①LED/LCD调试

    目录 0.前言 时钟设置 项目设置 1.功能要求 电路原理图 2.STM32Cubemx初始化 3.程序实现 LCD LED 编写LED灯亮灭的相关函数 LED关闭函数 LEDx开启函数 LEDx关闭 ...

  2. 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛程序设计试题以及详细题解

    文章目录 原题展示 原题分析 详细题解 LED模块 按键模块 串口 LCD模块 模拟电压读取(ADC) 脉冲输入输出 文章福利 原题展示 原题分析   本届国赛试题主要包含LCD.LED.按键.EEP ...

  3. 蓝桥杯嵌入式|第十三届蓝桥杯嵌入式省赛程序设计试题及其题解

    题目     十三届省赛是要制作一个可由串口设置密码的密码锁.在本场比赛中,我们将用到LED模块.按键模块.串口模块.定时器的PWM模块以及官方会提供源码的LCD模块.下面就请看原题: 题解      ...

  4. 第十三届蓝桥杯嵌入式省赛真题演练——密码锁

    题目分析 接下来站在博主的视角来完成这次模拟题.首先,通读题目后我大致能大致能获取到如下信息:要完成一个密码锁的项目,用户通过串口通讯来设置三位密码,使用按键来输入密码.那我的思路先根据硬件框图搭出程 ...

  5. 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式国赛客观题以及详细题解

    题1 概念题. USRAT:异步串口通信,常用于数据传输: SW-DP:SWD 的全称应该是 The Serial Wire Debug Port (SW-DP),也就是串行调试端口,是 ARM 目前 ...

  6. 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛(第二场)程序设计试题及其题解

    原题展示

  7. 【蓝桥杯嵌入式】第十三届蓝桥杯嵌入式省赛客观题以及详细题解

    题1 题解:   概念题. MCO引脚,是单片机对外提供时钟的引脚. HSE,高速外部时钟信号,时钟源由外部晶体/陶瓷谐振器与外部时钟: HSI,高速的内部时钟,由内部8MHz的RC振荡器产生,可直接 ...

  8. 2021年 第12届 蓝桥杯【备赛直播公开课 —— 软件类(本科组、高职高专组)】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...

  9. 第十三届蓝桥杯大赛软件赛省赛真题

    第十三届蓝桥杯大赛软件赛省赛Java 大学 B 组 文章目录 第十三届蓝桥杯大赛软件赛省赛Java 大学 B 组 [考生须知] 试题 A: 星期计算 试题 B: 山 试题 C: 字符统计 试题 D: ...

最新文章

  1. Reporting Services 的多值参数究竟能否用在数据集获取途径为存储过程的情景呢?...
  2. CSS和JS样式属性对照表
  3. python编程爱因斯坦的问题_教你如何用编程解决爱因斯坦的数学问题
  4. hadoop的datanode多磁盘空间处理
  5. python如何在循环中保存文件_Python中如何将爬取到的数据循环存入到csv文件中?...
  6. C#应用程序单例并激活程序的窗口 使其显示在最前端
  7. 除阿里、网易和字节外,杭州居然还有这么多互联网公司!
  8. cmd切换为administrator用户
  9. 富士康已看到芯片短缺开始缓解迹象 预计下半年会有改善
  10. std::lexicographical_compare
  11. 动态规划解决分割问题
  12. CentOS 6.9 下安装DB2
  13. Android系统上使用ANMPP搭建Nginx+PHP+MySQL+FTP服务(以天猫魔盒TMB100A为例)搭建网站
  14. 华三交换机如何进入配置_h3c交换机配置telnet配置教程
  15. 八大远程控制软件排行,Teamviewer替代软件
  16. 天气 经纬度 高德_高德获取经纬度与对应地区(思路:先获取经纬度 ---再通过经纬度获取地址)...
  17. eclipse打不开,提示出现“eclipse发生了错误,请参阅日志文件”
  18. 百度坐标批量转换成WGS84坐标
  19. word2vec利用词向量进行中文新闻标题相似度分析
  20. html5 运动轨迹绘画,html5 canvas行星运动轨迹动画特效

热门文章

  1. 银行信贷管理学试题库【1】
  2. 【iOS高级资深工程师面试篇】①、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 UI部分2/3 -图像显示原理-UI卡顿掉帧
  3. FFmpeg入门详解之2:音视频到底是什么
  4. Pandas 学习笔记一
  5. 机器学习2:——Pandas——2:DataFrame运算
  6. Fiio Q1的线性输入无法调节音量的问题
  7. 科教导刊杂志科教导刊杂志社科教导刊编辑部2022年第27期目录
  8. 二分查找的时间复杂度以及算法
  9. request.getSession.setAttribute和request.setAttribute区别
  10. c语言二进制转换八进制