【STM32】HAL库-备份寄存器(BKP)

简介

  • 备份寄存器是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检测引脚,上升沿检测,并开启中断

  1. PC13设置为输入模式,上拉输入。

  2. 备份控制寄存器(BKP_CR)的TPAL设置为1

  3. 备份控制/状态寄存器(BKP_CSR) 的TIF设置为1

  4. 备份控制寄存器(BKP_CR)的TPE设置为1

当发生中断的时候需要清除相应的标志位
清除备份控制/状态寄存器(BKP_CSR)的TIF和TEF。往CTI和CTE写入1清除TIF和TEF标志

/* 开启GPIOC的时钟 */
__HAL_RCC_GPIOC_CLK_ENABLE();
/* PC13为输入模式,下拉输入 */
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);
/* 使能对备份寄存器和RTC的访问 */
__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);//侵入检测TAMPER引脚上的高电平触发侵入事件,开启侵入事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值