BKP是“BACKUP”的缩写,stm32f103RCTE的内部装备了10个16位宽度的BKP寄存器。在主电源堵截或体系发生复位时刻时,BKP寄存器依然能够在备用电源的支持下坚持其内容。
BKP在实践运用中能够存入重要数据,避免被歹意检查,或用于断电等。
本例完成对BKP寄存器的读写操作,和侵略检测和处理。主程序中写入寄存器后,顺次打印出10个BKP寄存器数据,然后触发GPIOC13的侵略中止(输入低电平),在中止中打印出侵略事情发生后的寄存器内容(复位为0 )。
直接操作寄存器
用到的寄存器描绘如下:
备份数据寄存器x(BKP_DRx) (x = 1 … 10):低16位[15:0]有用,用来写入或读出备份数据。
备份操控寄存器(BKP_CR):
低两位有用。
TPAL[1]:侵入检测TAMPER引脚有用电平(TAMPER pin active level)
- 0:侵入检测TAMPER引脚上的高电平会铲除一切数据备份寄存器(假如TPE位为1)
- 1:侵入检测TAMPER引脚上的低电平会铲除一切数据备份寄存器(假如TPE位为1)
TPE[0]:发动侵入检测TAMPER引脚(TAMPER pin enable)
- 0:侵入检测TAMPER引脚作为通用IO口运用
- 1:敞开侵入检测引脚作为侵入检测运用
备份操控/状况寄存器(BKP_CSR):
TIF[9]:侵入中止标志(Tamper interrupt flag) 0:无侵入中止 1:发生侵入中止
当检测到有侵入事情且TPIE位为1时,此位由硬件置1。
经过向CTI位写1来铲除此标志位(一起也铲除了中止)。假如TPIE位被铲除,则此位也会被铲除。
TEF[8]:侵入事情标志(Tamper event flag) 0:无侵入事情 1:检测到侵入事情
当检测到侵入事情时此位由硬件置1。经过向CTE位写1可铲除此标志位
TPIE[2]:答应侵入TAMPER引脚中止(TAMPER pin interrupt enable)
0:制止侵入检测中止 1:答应侵入检测中止(BKP_CR寄存器的TPE位也有必要被置1)
注1:侵入中止无法将体系内核从低功耗形式唤醒。 注2:仅当体系复位或由待机形式唤醒后才复位该位。
CTI[1]:铲除侵入检测中止(Clear tamper interrupt)
0:无效 1:铲除侵入检测中止和TIF侵入检测中止标志
CTE[0]:铲除侵入检测事情(Clear tamper event)
0:无效 1:铲除TEF侵入检测事情标志(并复位侵入检测器)。
要写入BKP寄存器数据有必要在 PWR->CR中撤销备份区写保护,才能够写入BKP数据。stm32敞开侵略检测也不需要设置GPIOC的时钟和输入输出形式。
代码如下:(system.h 和stm32f10x_it.h等相关代码参照stm32 直接操作寄存器开发环境装备)
User/main.c
Library/src/bkp.c
Library/inc/bkp.h
stm12f10x_it.c
}