本文主要是介绍BKP备份寄存器、RTC实时时钟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
1. BKP (Backup Registers)备份寄存器
2. RTC (Real Time Clock)实时时钟
1. BKP (Backup Registers)备份寄存器
BKP可用于存储用户应用程序数据。当VDD (2.0-3.6V)电源被切断,他们仍然由VBAT (1.8-3.6V)维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。
TAMPER引脚产生的侵入事件将所有备份寄存器内容清除。
RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲。
存储RTC时钟校准寄存器用户数据存储容量:20字节(中容量和小容量) /84字节(大容量和互联型)。
当VDD主电源掉电,后备区域仍然可以有VBAT的备用电源供电。
当VDD主电源上电,后背区域供电会有VBAT切换到VDD。
BKP里主要有数据寄存器,控制寄存器,状态寄存器和RTC始终校准寄存器。
2. RTC (Real Time Clock)实时时钟
RTC是一个独立的定时器,可为系统提供时钟和日历的功能。
RTC和时钟配置系统处于后备区域,系统复位时数据不清零,VDD(2.0-3.6V)断电后可借助VBAT (1.8-3.6V)供电继续走时。
32位的可编程计数器,可对应Unix时间戳的秒计数器20位的可编程预分频器,可适配不同频率的输入时钟。
可选择三种RTC时钟源:
HSE时钟除以128 (通常为8MHz/128)
LSE振荡器时钟(通常为32.768KHz)
LSI振荡器时钟(40KHz)
具体可参考:
STM32F1之RTC实时时钟(Unix时间戳)-CSDN博客
高速时钟,主要供内部程序运行和主要外设使用;
低速时钟,主要供RTC,看门狗这些使用。
对于RTC有三路
第一路:8MHz晶振,需要注意,对于8MHz晶振,需要提前分频,由于8MHz的晶振太快,若是不进行128的分频,即便后续通过RTC的20位分频器也分不到1Hz的频率
第二路:32.768KHz晶振,不需要再进行分频,可以和RTC直接连接
第三路:40KHz,主要作为看门狗时钟,可以作为备选RTC的时钟。
相关函数运用介绍:
void BKP_DeInit(void);
手动清空BKP所有的数据寄存器。
当有备用电源的情况下,BKP的数据主电源掉电不清零,上电复位也不清零,但是要是想进行清零操作,可以调用这个函数。
void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel); void BKP_TamperPinCmd(FunctionalState NewState);
配置TAMPER侵入检测功能。
BKP_TamperPinLevelConfig
配置TAMPER引脚的有效电平。
BKP_TamperPinCmd
是否开启入侵检测功能。
void BKP_ITConfig(FunctionalState NewState);
中断配置。
void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource);
时钟输出功能配置。
void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue);
设置RTC校准值。就是写入RTC校准寄存器。
void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);
写备份寄存器,第一个参数指定要写在哪个DR里,第二个参数指定要写入的数据。
uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);
读备份寄存器。要读哪个DR,返回值就是DR里存的值。
Visual Studio编辑器中C4996 ‘scanf‘: This function or variable may be unsafe.问题解决方案-CSDN博客
Visual Studio编辑器左侧菜单栏不小心关掉如何打开(左侧解决方案资源管理器不显示如何打开)、C语言中int main和void main的区别以及C工程的创建_visual studio2022 资源管理器怎么打开桌面面板-CSDN博客
STM32F1之RTC实时时钟(Unix时间戳)-CSDN博客
这篇关于BKP备份寄存器、RTC实时时钟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!