关键词不能为空

当前您在: 主页 > 英语 >

STM32学习笔记(18)-数据的保存和毁灭

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-06 02:01
tags:

-

2021年2月6日发(作者:学案导学)


数据的保存和毁灭(


2





和以前学到的有关数据保存不同,这里的数 据保存还有“保密”之意,即一旦受到


意外的侵入,


STM32


将毁灭数据。这是通过


Tamper


机 制来实现的。



以下是数据手册中的有关说明:



5.3.1


侵入检测





TAMPER


引脚上的信号从


0


变成


1


或者从

< p>
1


变成


0(


取决于备份控 制寄存器


BKP_CR



TPAL



)



会产生一个 侵入检测事件。


侵入检测事件将所有数据备份寄存器内容清除。



然而为了


避免丢失侵入事件,


侵入检测 信号是边沿检测的信号与侵入检测允许位的逻辑与,


从而在侵


入 检测引脚被允许前发生的侵入事件也可以被检测到。







TPAL=0


时:如果在启动侵入检测


TAMPER


引脚前


(


通过设置


TP E



)


该引脚已经为高


电平,


一旦启动侵入检测功能,


则会产生一个额外的侵 入事件


(


尽管在


TPE


位置’1’后并没


有出现上升沿


)







TPAL=1


时:如果在启动侵 入检测引脚


TAMPER



(


通过设置


TPE



)< /p>


该引脚已经为低


电平,


一旦启动侵入检测 功能,


则会产生一个额外的侵入事件


(


尽管在


TPE


位置’1’后并没


有出现 下降沿


)





设置


BKP_CSR


寄存器的


TPIE


位为’1’,当检测到侵入事件时就会产生一个中断。




在一个侵入事件被检测到并被清除后,侵入 检测引脚


TAMPER


应该被禁止。然后,在再次写

< p>
入备份数据寄存器前重新用


TPE


位启动侵入检测 功能。


这样,


可以阻止软件在侵入检测引脚

上仍然有侵入事件时对备份数据寄存器进行写操作。这相当于对侵入引脚


TAMPE R


进行电平


检测。





注:当


V


DD


电源断开时,侵入检测功能仍然有效。为了避免不必要的复位数据备份


寄存器,


TAMPER


引脚应该在片外连接到正确的电平。




显然,


Tamper


需要硬件与之配合。


以上数据手 册描述了硬件配置时的一些注意事项。




1




可以是把引脚由低电平到高电平认为是一次侵入,


也可以把引脚 从高电平变到


低电平认为是一次侵入,这通过


TPAL


来设置。





2



Tamper


机制需要被启动才能起作用。但在启动之前,如果引脚已处于设定的


状态,那么一旦启动,就会产生一次


Tamper

事件,这需要注意,否则会引起数据的意外丢


失而不自觉。




3




即便芯片上的


VDD


电源断开,(只要 仍有


VBAT


),那么


Tamper< /p>


检测仍是有效


的,因此,设计硬件时必须要小心,如果某设计是将


Tamper


引脚通过上拉电阻接


VD D


,并


在这个引脚上接入机械开关到地。如果开关导通,那么就 是一次


Tamper


事件,这个没有问


题。但是,如果电源断开(


VDD


变低),也会引发一次


Tamper


事件,而这往往并不是设计


都的 本意。因此,这个引脚的上拉电阻必须接到


VBAT


而不是接到


VDD





4




总的来说,


TAMPER


并不复杂,下 面来看一看代码。




这次是用的


STM32


库中的这个例子。





有关< /p>


LED


的设置,


这里就不再重复了,


和上一篇文章


(数据的保存与毁灭



1



相同)




/* Enable write access to Backup domain */



PWR_BackupAccessCmd(ENABLE);



这是打开


BKP


功能。



/* Clear Tamper pin Event(TE) pending flag */



BKP_ClearFlag();



清除

Tamper


事件



/* Tamper pin active on low level */



BKP_TamperPinLevelConfig(BKP_TamperPi nLevel_Low);



配置


Ta mper


引脚究竟是高电平有效还是低电平有效,这个再研究一下,继续跟踪:



/**



* @brief Configures the Tamper Pin active level.



* @param BKP_TamperPinLevel: specifies the Tamper Pin active level.



* This parameter can be one of the following values:



* @arg BKP_TamperPinLevel_High: Tamper pin active on high level



* @arg BKP_TamperPinLevel_Low: Tamper pin active on low level



* @retval None



*/



void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel)



{



/* Check the parameters */



assert_param (IS_BKP_TAMPER_PIN_LEVEL(BKP_TamperPinLevel));



*(__IO uint32_t *) CR_TPAL_BB = BKP_TamperPinLevel;



}



CR_TPAL_BB


又是什么呢?



/* Alias word address of TPAL bit */



#define CR_OFFSET (BKP_OFFSET + 0x30)



#define TPAL_BitNumber 0x01



#define CR_TPAL_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (TPAL_BitNumber *


4))


-


-


-


-


-


-


-


-



本文更新与2021-02-06 02:01,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/604710.html

STM32学习笔记(18)-数据的保存和毁灭的相关文章