简介
-
备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。 -
他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。 -
当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。
使能对备份寄存器和RTC的访问
复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。执行以下操作可以使能对备份寄存器和RTC的访问。
- 通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟
- 电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。
使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。
如果应用中没有使用外部电池,VBAT必须连接到VDD引脚上,此时VDD断电,则会丢失备份寄存器的内容和RTC的功能失效。
侵入检测
- 当TAMPER引脚上的信号从0变成1(上升沿)或者从1变成0(下降沿)会产生一个侵入检测事件
- TAMPER引脚的检测边沿取决于备份控制寄存器BKP_CR的TPAL位
- 侵入检测事件将所有数据备份寄存器内容清除
- 设置BKP_CSR寄存器的TPIE位为1,当检测到侵入事件时就会产生一个侵入事件中断
- 当VDD电源断开时,侵入检测功能仍然有效
RTC校准
- 为方便测量,RTC时钟可以经64分频输出到侵入检测引脚TAMPER上。通过设置RTC校验寄存器(BKP_RTCCR)的CCO位来开启这一功能
- 通过配置CAL[6:0]位,此时钟可以最多减慢121ppm。
侵入检测demo
采用STM32F103C8T6单片机,KeilMDK5.32版本
PC13作为TAMPER检测引脚,上升沿检测,并开启中断
-
PC13设置为输入模式,上拉输入。 -
备份控制寄存器(BKP_CR)的TPAL设置为1 -
备份控制/状态寄存器(BKP_CSR) 的TIF设置为1 -
备份控制寄存器(BKP_CR)的TPE设置为1
当发生中断的时候需要清除相应的标志位 清除备份控制/状态寄存器(BKP_CSR)的TIF和TEF。往CTI和CTE写入1清除TIF和TEF标志
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitTypeStruct = { 0 };
GPIO_InitTypeStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitTypeStruct.Pin = GPIO_PIN_13;
GPIO_InitTypeStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOC, &GPIO_InitTypeStruct);
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_RCC_BKP_CLK_ENABLE();
HAL_PWR_EnableBkUpAccess();
SET_BIT(BKP->CSR, BKP_CSR_TPIE_Msk);
HAL_NVIC_SetPriority(TAMPER_IRQn, 4, 0);
HAL_NVIC_EnableIRQ(TAMPER_IRQn);
SET_BIT(BKP->CR, BKP_CR_TPE_Msk);
|