swipe类网站长沙人才招聘网长沙58同城招聘网
web/
2025/10/1 2:41:42/
文章来源:
swipe类网站,长沙人才招聘网长沙58同城招聘网,seo实战培训学校,中国建设银行山西省分行网站系列文章目录
嵌入式|蓝桥杯STM32G431#xff08;HAL库开发#xff09;——CT117E学习笔记01#xff1a;赛事介绍与硬件平台
嵌入式|蓝桥杯STM32G431#xff08;HAL库开发#xff09;——CT117E学习笔记02#xff1a;开发环境安装
嵌入式|蓝桥杯STM32G431#xff08;…系列文章目录
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记01赛事介绍与硬件平台
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记02开发环境安装
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记03G4时钟结构
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记04从零开始创建工程模板并开始点灯
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记05Systick滴答定时器
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记06按键输入
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记07ADC模数转换
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记08LCD液晶屏
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记09EEPROM
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记10USART串口通讯
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记11数字电位器MCP4017
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记12DAC数模转换
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记13RTC实时时钟
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记14PWM捕获
嵌入式|蓝桥杯STM32G431HAL库开发——CT117E学习笔记15PWM输出
嵌入式|蓝桥杯STM32G431HAL库开发——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_GetTime和HAL_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/web/84793.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!