RTC的初始化,配置及使用请参考固件库(此处略去)
STM32F207的RTC与备分寄存器
STM32F207具有20个32位的备分寄存器,能够存储共计80字节的内容,当入侵检测(前文中提到的“改变检查”)中断发生时将会被复位,而系统复位,以及系统从其他低功耗模式被唤醒都不会对RTC和BKP造成影响。备分寄存器(BKP)与RTC有什么关系呢,我们从实际来分析一下。我们的RTC和备分寄存器都是可以在系统掉电的情况下由电池进行供电的,假如没有BKP,当系统电源断开后,或者系统复位后,或者系统从低功耗模式被唤醒后,它定要对某些模块进行初始化,而这个时候RTC由电池供电,其数据具有连续性,如果系统不能判断RTC是否该重新初始化,那系统只能对其进行初始化导致系统时间回到默认,用户或上位机软件又得对其进行修改,增加了应用的复杂性。这个时候如果加上BKP,因为它也是可以由电池供电的,掉电丢失信息,意味着如果在电池供电正常的情况下,如果系统VDD掉电,BKP的内容就会保留下来,这样的话,我们在第一次配置好RTC后就可以通过在BKP中某个寄存器内写入一个特片标志值,便可以在系统复位后用于判断,避免对RTC的重配置。
为了避免意外的写入操作,在系统复位后,对BKP和RTC的访问都被禁止,并且备分区BKP被保护起来。需要特殊的指令序列后才可以对其进行访问。
举个例子说明,假如第一次配置完RTC后我们往备分寄存器0中写入一个值:0x32F2,则每次复位后我们配置RTC就用下面一段代码即可:
if (RTC_ReadBackupRegister(RTC_BKP_DR0) != 0x32F2)
{
/* RTC configuration */
RTC_Config();
/* Configure the RTC data register and RTC prescaler */
RTC_InitStructure.RTC_AsynchPrediv = AsynchPrediv;
RTC_InitStructure.RTC_SynchPrediv = SynchPrediv;
RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
/* Check on RTC init */
if (RTC_Init(&RTC_InitStructure) == ERROR)
{
printf("\n\r /!\\***** RTC Prescaler Config failed ********/!\\ \n\r");
}
/* Configure the time register */
RTC_TimeRegulate();
}
当然里面有几个函数,需要你根据自已的需要进行选择性的配置和修改。
共2条
1/1 1 跳转至页
【STM32回顾】-- STM32F207的RTC与备份寄存器配合完成万年历
关键词: STM32 回顾 STM32F207 备份 寄存器
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 打赏了!打赏了!打赏了! | |
我要赚赏金打赏帖 |
|
|---|---|
| 空气质量检测器设计与实现被打赏¥24元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】LWIP进行UDP、TCP、HTTP、MQTT功能联合测试被打赏¥41元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】RA8D1部署FreeRTOS+LWIP被打赏¥36元 | |
| RTOS怎么选?让我来给你答案!被打赏¥15元 | |
| 【S32K3XX】Flash驱动使用被打赏¥26元 | |
| 【FreeRtos】第一个任务的启动过程被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】FPB-RA6E2开发板的WDT功能测试被打赏¥22元 | |
| 关于cmakelist特性presets的使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】M5STACK系列屏幕质量测试程序,竟然有块亮斑?被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】快速搭建瑞萨FPB-RA6E2开发板开发环境被打赏¥14元 | |
我要赚赏金
