STM32学习笔记:BKP功能的数据保存与毁灭

版权申诉
0 下载量 105 浏览量 更新于2024-08-06 收藏 24KB DOC 举报
STM32学习笔记数据的保存与毁灭BKP功能 STM32学习笔记中介绍了数据的保存与毁灭BKP功能,BKP(Backup)是STM32微控制器中的一个重要组件,用于保存数据以便在断电或复位时不丢失重要信息。下面将详细介绍BKP的功能和特性。 一、BKP的功能 BKP可以用来保存数据,包括42个16位的存放器,共可保存84字节的内容。这些数据由VBAT的供电来维持,确保数据的安全性。 二、数据的消灭 BKP内保存的数据可以被消灭,如果有人希望恶意得到这些数据,可以使用TAMPER机制来完成。TAMPER机制需要占用一个外部引脚(PC13),用于检测是否有人试图非法访问数据。 三、RTC校准功能 如果不使用TAMPER机制,那么这个外部引脚可以用作RTC校准功能,用于调整RTC的时间。 四、BKP的保存机制 当系统复位、电源复位或待机模式下被唤醒时,BKP中的值不会丧失或被复位。这是因为BKP使用VBAT供电,独立于系统供电。 五、STM32的复位机制 STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。系统复位将复位除时钟控制存放器CSR中的复位标志和备份区域中的存放器以外的所有存放器。 系统复位可以通过以下事件触发: * NRST管脚上的低电平(外部复位) * 窗口看门狗计数终止(WWDG复位) * 独立看门狗计数终止(IWDG复位) * 软件复位(SW复位) * 低功耗管理复位 电源复位可以通过以下事件触发: * 上电/掉电复位(POR/PDR复位) * 从待机模式中返回 电源复位将复位除了备份区域外的所有存放器。 六、检测复位事件 可以通过查看RCC_CSR控制状态存放器中的复位状态标志位来识别复位事件来源。例如,可以使用以下函数来检测是否上电/掉电复位: RCC_GetFlagStatus(RCC_FLAG_PORRST) 七、备份域的复位 如果必须要人为地令备份域复位(所有数据都被清零),那么有两种方法: * 软件复位(操作RCC_BDCR中) BKP功能是STM32微控制器中的一个重要组件,用于保存数据以便在断电或复位时不丢失重要信息。通过了解BKP的功能和特性,可以更好地使用STM32微控制器。

*** Using Compiler '', folder: 'E:\Keil_v5\ARM\ARMCLANG\Bin' Build target 'Target 1' compiling core_cm3.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\core_cm3.__i"' compiling system_stm32f10x.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\system_stm32f10x.__i"' compiling misc.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\misc.__i"' compiling stm32f10x_bkp.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\stm32f10x_bkp.__i"' compiling stm32f10x_adc.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\stm32f10x_adc.__i"' compiling stm32f10x_can.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\stm32f10x_can.__i"' compiling stm32f10x_cec.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\stm32f10x_cec.__i"' compiling stm32f10x_crc.c... *** Error: CreateProcess failed, Command: '"E:\Keil_v5\ARM\ARMCLANG\Bin\ArmCC" --via ".\objects\stm32f10x_crc.__i"' linking... .\Objects\test.axf: Error: L6967E: Entry point (0x08000000) points to a Thumb instruction but is not a valid Thumb code pointer. Finished: 0 information, 0 warning and 1 error messages. ".\Objects\test.axf" - 1 Error(s), 0 Warning(s). Target not created. Build Time Elapsed: 00:00:00

2023-07-14 上传