这里只为了将写入后备寄存器的数据毁灭,相当于擦除操作。
具体详细功能请查看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引脚(别戳过头了),因为一开始
*配置的是低电平有效。触发中断。戳完就可以在串口
*助手上看到 触发侵入中断了,此时后备寄存器数据
*毁灭
******************************************/