BKP 是位于后备区域的,BKP 里主要有数据寄存器、控制寄存器、状态寄存器和 RTC 时钟校准寄存器这些东西,其中数据寄存器是主要部分,用来存储数据的,每个数据寄存器都是 16 位的,也就是,一个数据寄存器可以存 2 个字节,那对于中容量和小容量的设备,里面有 DR1、DR2、一直到 DR10 总共 10 个数据寄存器,那一个寄存...
//BKP_DRx: x根据容量选择,x:[1, 42] //BKP_DR为16位数据类型 BKP_WriteBackupRegister(BKP_DR1, 0xA5A5); //写备份寄存器 BKP_ReadBackupRegister(BKP_DR1);//读备份寄存器 复位备份寄存器 BKP_DRx寄存器不会被系统复位、电源复位、从待机模式唤醒所复位。 它们可以由备份域复位来复位或(如果侵入检测引脚...
(BKP_ReadBackupRegister(BKP_DR1)!= 0xABCD) 注意:BKP的寄存器有纽扣电池的时候,即使没有外部电源,也不会进行复位。 void RTC_Init(void) { // 1. 启用 PWR 和 BKP 外设时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // 启用 PWR 外设时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP, ...
然后BKP是位于后备区域的,BKP里主要有数据寄存器、制寄存器、状态寄存器和RTC时钟校准寄存器这些东西,其中数据寄存器是主要部分,用来存储数据的,每个数据寄存器都是16位的,也就是,一个数据寄存器可以存2个字节,那对于中容量和小容量的设备,里面有DR1、DR2、一直到、DR10总共10个数据寄存器,那一个寄存器存两个字节,所...
接着我们读取备份寄存器BKP_DR1中的值来判断是否是第一次上电,如果不是则直接显示时钟,否则进行时间设置。当BKP_DR1的值不为0xAAAA,说明是第一次上电,此时需要对RTC进行初始化。注意初始化的实现函数RTC_Configuration();,为什么那么写,请参考我们之前给出的“第一次使用RTC的配置工作总结”,然后进行时钟设置。
1. 更新配置同时退出配置模式 RTC_ExitConfigMode();//退出配置模式,更新配置 1. 在退出配置模式更新配置之后我们在备份区域 BKP_DR1 中写入 0X5050 代表我们已经初始化过时钟了,下次开机(或复位)的时候,先读取 BKP_DR1 的值,然后判断是否是0X5050 来决定是不是要配置。接着我们配置 RTC 的秒钟中断,并进行分...
//BKP->DR1用于保存是否第一次配置的设置 //返回0:正常 //其他:错误代码 u8 RTC_Init( void ){...
1:秒标志条件成立 12.2.3 预分频装载寄存器1:RTC_PRLH Bit 3~Bit 0:RTC预分频装载值高位 12.2.4 预分频装载寄存器2:RTC_PRLL Bit 15~Bit 0:RTC预分频装载值低位 注:RTC时钟频率根据预分频寄存器的值有如下计算公式。 其中RTCCLK代表的RTC的输入时钟,一般默认32.768kHz。
BKP_WriteBackupRegister(BKP_DR1,Data[0]);//数据写入,在做STM32下电测试时,写入代码注释 BKP_...
比如我们可以在RTC初始化之后,对BKP_DR1寄存器写入一个值,比如0x5050,然后在 RTC_Init(void)函数开始处,先读取并判断BKP_DR1寄存器的值是否为0x5050,进而可以知道系统的RTC是否有VBAT外部电源维持供电。 STM32时钟系统 参考《STM32中文参考手册》中对STM32的时钟系统的详细说明。