stm32 BKP 擦除后备寄存器存储的数据

这里只为了将写入后备寄存器的数据毁灭,相当于擦除操作。

具体详细功能请查看stm32F103数据手册(中文手册:第五章 第47页开始)

侵入脚PC13

//TAMPER引脚中断配置
void TAMPER_ITConfig(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = TAMPER_IRQn; 

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);//初始化侵入中断的优先级

BKP_ITConfig(ENABLE);//使能侵入中断

}

int main()
{
   USART1_Init(115200);
/************************************************************/
//   有兴趣可以封装成函数,这里只是测试功能
//   其他写入,读出网上都有,参考写就行
/************************************************************/
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);//初始化电源控制时钟与备份寄存器时钟
   PWR_BackupAccessCmd(ENABLE); //允许访问备份寄存器
   BKP_TamperPinCmd(DISABLE);	//先关闭侵入检测引脚
   BKP_ITConfig(DISABLE);      //关闭侵入中断
   BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low);	//设置检测引脚低电平有效
   BKP_ClearFlag();	//清除侵入检测事件
   TAMPER_ITConfig();//配置中断优先级并打开侵入中断,不需要进入中断可以注释掉这句,并不影响侵入事件的发生
   BKP_TamperPinCmd(ENABLE);//开启侵入检测引脚

/************测试之前写入的数据*********************/
   printf("上电读取BKP数据:");

   for(i=0x0000;i<=0x0054;i+=4){    // baseaddr:0x0004~0x0028  共10个16位的数据后备寄存器 

   printf("%x ",BKP_ReadBackupRegister(i));

  }
}

/*******************************************/
//以下放在中断文件中  it.c
/*******************************************/
void TAMPER_IRQHandler(void)
{
    if(BKP_GetITStatus()!=RESET){
    printf("giao 我里个giaogiao 触发侵入中断\r\n");
    BKP_ClearITPendingBit();//清除侵入检测中断
    BKP_ClearFlag();//清除侵入检测事件

//如果将下面两句执行,那么就变成电平触发,导致的现象:若PC.13引脚保持有效电平,则系统会反复进入中断

//         BKP_TamperPinCmd(DISABLE);

//         BKP_TamperPinCmd(ENABLE);

    }


}

/*****************************************
*使用低电平戳PC13引脚(别戳过头了),因为一开始
*配置的是低电平有效。触发中断。戳完就可以在串口
*助手上看到  触发侵入中断了,此时后备寄存器数据
*毁灭
******************************************/

 

你可能感兴趣的:(STM32)