您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术STM32学习手记:数据的保存与毁灭 正文
STM32学习手记:数据的保存与毁灭

STM32学习手记:数据的保存与毁灭

点击数:7833 次   录入时间:03-04 11:44:39   整理:http://www.55dianzi.com   嵌入式系统-技术
  以下是RCC_CSR的内容:

  1.jpg

  2.jpg

  调试时不太容易区分,以下是某次调试中截到的RCC_CSR数据。

  3.jpg

  6.1.2 电源复位

  当以下事件中之一发生时,产生电源复位:

  1. 上电/掉电复位(POR/PDR复位)

  2. 从待机模式中返回

  电源复位将复位除了备份区域外的所有寄存器。(见图3)

  图中复位源将最终作用于RESET管脚,并在复位过程中保持低电平。复位入口矢量被固定在地址0x0000_0004。更多细节,参阅表36。

  检测可以是否上电/掉电复位可以用以下的函数:

  RCC_GetFlagStatus(RCC_FLAG_PORRST)

  其中RCC_FLAG_PORRST也可以被替代成以下的一些符号,以检测不同的内容:

  4.jpg

  **************************************************************************

  5. 如果必须要人为地令备份域复位(所有数据都被清零),那么有两种方法:

  a) 软件复位(操作RCC_BDCR中的BDRST位产生。);以下是RCC_BDCR中相关的内容:

  6.3.9 备份域控制寄存器 (RCC_BDCR)

  5.jpg

  6.jpg

  b) VDD和VBAT均掉电,那么在VDD或都VBAT上电时将引发备分域复位(这是为了保护数据的完整性?)
 

6. 数据寄存器究竟是哪些呢?

  1.jpg

  那么在STM32提供的库里又是如何来用这些寄存器的呢?我们找一找,在stm 32f10x_bkp.c中,代码如下:

  /**

  * @brief Writes user data to the specified Data Backup Register.

  * @param BKP_DR: specifies the Data Backup Register.

  * This parameter CAN be BKP_DRx where x:[1, 42]

  * @param Data: data to write

  * @retval None

  */

  void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data)

  {

  __IO uint32_t tmp = 0;

  /* Check the parameters */

  assert_param(IS_BKP_DR(BKP_DR));

  tmp = (uint32_t)BKP_BASE;

  tmp += BKP_DR;

  *(__IO uint32_t *) tmp = Data;

  }

  即只需要提供两个参数,第一个是BKP地址,第二个是数据,两个都是16位的数据。第二个参数没有问题,第一个参数如何提供呢?看例子中的代码:

  /**

  * @brief Writes data Backup DRx registers.

  * @param FirstBackupData: data to be written to Backup data registers.

  * @retval None

  */

  void WriteToBackupReg(uint16_t FirstBackupData)

  {

  uint32_t index = 0;

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  下一页


本文关键字:手记  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术