RTC实时时钟
BKP可以在VBAT维持供电时,完成主电源掉电时,保存少量数据的任务。备份寄存器和VBAT引脚同时存在,更多是为了服务RTC的。
目前,Linux、Windows、安卓这些系统,底层的计时系统都是使用的Unix时间戳,Unix Timestamp,
只计秒的好处:简化硬件电路,不用考虑年月日寄存器、仅为
时间间隔计算很方便
存储方便
但是比较占用软件资源,需要转换位年月日
2038年32的计时系统可能会出问题。
UTC的闰秒机制可能导致一分钟出现61秒的情况,
BKP会读写相关寄存器就行,RTC需要重点掌握,TAMPER引脚是一个安全保障设计,防拆功能,如果BKP里存储了一些敏感数据,可以使用TAMPER的侵入检测功能,先加一个默认的上拉和下拉电阻,到设备外壳的防拆开关和触点。在TAMPER产生下降沿或上升沿,STM32检测到侵入时间了,BKP数据自动清空并申请中断,在中断里,还可以继续保护设备,比如清楚其他存储器数据,然后设备锁死。
后备区域不只有BKP,还有RTC的相关电路,STM32后备区域特点,当VDD主电源掉电时,后备区域可由VBAT备用电池供电。
BKP主要由数据寄存器(主要部分用来存储数据,每个数据16位,1个数据寄存器存储两个字节)、状态寄存器、控制寄存器和RTC时钟校准寄存器(当输出校准时钟时,再配合校准寄存器,可以对RTC的误差进行校准(如何实现的?))
这些函数是用于配置TAMPER侵入检测功能的
BKP_TamperPinLevelConfig ,可以配置TAMPER引脚的有效电平,
BKP_TamperPinCmd ,就是是否开启侵入检测功能,
那就先配置TAMPER有效电平,再使能侵入检测功能,
BKP_ITConfig 中断配置
BKP_RTCOutputConfig 时钟输出功能的配置 可以选择在RTC引脚输出时钟信号,输出RTC校准时钟,RTC闹钟脉冲或者秒脉冲
BKP_SetRTCCalibrationValue 其实就是写入RTC校准寄存器
这些是BKP附加的一些小功能,了解即可
下面才是重点:
BKP_WriteBackupRegister 写备份寄存器
BKP_ReadBackupRegister 读备份寄存器
下面四个是老朋友,不用解释。
PWR_BackupAccessCmd 备份寄存器访问使能,就是设置PWR_CR寄存器里的DBP位,
代码:1.开启PWR和BKP时钟,外设时钟控制,开启PWR时钟,读取BKP
LSE需要手动开启,不然用不了,
进入睡眠的目的是:如果STM32一直没有收到数据,那这个主循环也会一直查询标志位,,这是无意义的耗电操作,不如让它睡眠