stm32 hal库 rtc 备份 寄存器 备份sram 调试笔记_stm32 备份sram-程序员宅基地

技术标签: stm32  STM32  

rtc 是可以单独供电的,通常设计rtc是带有一个纽扣电池用来给rtc供电。本次是调试rtc 的备份寄存器和备份sram,这两个都是可以在rtc不断电情况下一直保存数据。
步骤

  • 配置rtc参数,用cube mx 生成初始化代码
  • 使能备份寄存器时钟和备份sram时钟
  • 写入数据,不断电重启等
  • 读取数据
    使用的hal库函数
*** Main and Backup Regulators configuration ***
================================================
[..] 
  (+) The backup domain includes 4 Kbytes of backup SRAM accessible only from 
      the CPU, and address in 32-bit, 16-bit or 8-bit mode. Its content is 
      retained even in Standby or VBAT mode when the low power backup regulator
      is enabled. It can be considered as an internal EEPROM when VBAT is 
      always present. You can use the HAL_PWREx_EnableBkUpReg() function to 
      enable the low power backup regulator. 

  (+) When the backup domain is supplied by VDD (analog switch connected to VDD) 
      the backup SRAM is powered from VDD which replaces the VBAT power supply to 
      save battery life.

  (+) The backup SRAM is not mass erased by a tamper event. It is read 
      protected to prevent confidential data, such as cryptographic private 
      key, from being accessed. The backup SRAM can be erased only through 
      the Flash interface when a protection level change from level 1 to 
      level 0 is requested. 
  -@- Refer to the description of Read protection (RDP) in the Flash 
      programming manual.

    Refer to the product datasheets for more details.

翻译

主稳压器和备用稳压器配置 =======================================
[…](+)备份域包括只能从CPU访问的4 KB备份SRAM,其地址为32位,16位或8位模式。启用低功耗备用稳压器后,即使在待机或VBAT模式下,其内容也会保留。当始终存在VBAT时,可以将其视为内部EEPROM。您可以使用HAL_PWREx_EnableBkUpReg()函数来启用低功耗备用稳压器。
(+)当备份域由VDD提供(模拟开关连接到VDD)时,备份SRAM由VDD供电,该VDD替代了VBAT电源以节省电池寿命。
(+)篡改事件不会大量擦除备用SRAM。对其进行了读取保护,以防止访问机密数据(例如加密私钥)。当保护级别从1级更改为0级时,只能通过Flash接口擦除备份SRAM。
-@-请参阅Flash编程手册中的读保护(RDP)说明。有关更多详细信息,请参考产品数据表。

  __HAL_RCC_PWR_CLK_ENABLE();/* 电源管理时钟使能 */
  HAL_PWR_EnableBkUpAccess();/* 使能允许访问备份域(备份寄存器和备份SRAM)*/
  HAL_PWREx_EnableBkUpReg();/* 使能备份寄存器 这里最新版是这个函数*/
  __HAL_RCC_BKP_CLK_ENABLE();/* 使能备份域时钟 ,虽然有保留在h文件中,但是没具体实现,不用这个*/

备份寄存器

备份寄存器一般都数量比较少,只能存一点点东西。
数量需要查阅手册或者直接从生成的代码中找到数量,比如,本次生成的代码在函数中说明的0-19个寄存器,数据可以看见从下面实现是uint32_t大小的数据

/**
  * @brief  Writes a data in a specified RTC Backup data register.
  * @param  hrtc pointer to a RTC_HandleTypeDef structure that contains
  *                the configuration information for RTC.
  * @param  BackupRegister RTC Backup data Register number.
  *          This parameter can be: RTC_BKP_DRx where x can be from 0 to 19 to
  *                                 specify the register.
  * @param  Data Data to be written in the specified RTC Backup data register.
  * @retval None
  */
void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data)
{
    
  uint32_t tmp = 0U;

  /* Check the parameters */
  assert_param(IS_RTC_BKP(BackupRegister));

  tmp = (uint32_t) & (hrtc->Instance->BKP0R);
  tmp += (BackupRegister * 4U);

  /* Write the specified register */
  *(__IO uint32_t *)tmp = (uint32_t)Data;
}

只需要在使能之后写入 再读取。

备份SRAM

上面提到了是4KB,这里查阅手册确实是4KB
在这里插入图片描述
这里直接使用就可以

uint32_t addr  = 0x40024000;
*(__IO uint32_t *)addr  = 0x01;//写入
uint32_t data = *(__IO uint32_t *)addr;//读取

当保护级别从1级更改为0级时,只能通过Flash接口擦除备份SRAM。

HAL_FLASH_Unlock();
HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError)

就需要使用flash接口擦除了(未验证)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhaqonianzhu/article/details/108221834

智能推荐

apache2 开发C++模块 —— 基于cximage实现图片、缩略图下载功能_c++ cximage 图片剪切-程序员宅基地

文章浏览阅读1.8k次。之前的博客中有提到基于apache2的模块开发,提供了下载文件的demo。但后来发现不仅仅是文件(准确说是图片)下载,还需要根据相关参数,提供图片缩略图下载、裁剪图下载或原图下载等功能。一、编译问题: 种种原因,选用cximage库来提供图片处理功能。但坑爹的是这个库是C++的,而apache是c的,apxs怎么才能编译C++代码呢? 当然可以把cximage封装一下_c++ cximage 图片剪切

Git问题:Git clone 时遇到fatal: protocol ''https'' is not supported问题解决方案_fatal: protocol '鈥渉ttps' is not supported-程序员宅基地

文章浏览阅读1.5w次,点赞60次,收藏33次。一、问题来因今天在整合项目时需要将码云上的仓库clone下来,在Git Bash 里执行 clone命令报错protocol ''https'' is not supported,经过一番查找,找到了原因,分享给大家,其实也是我们常犯的一个错误。二、寻找解决方案开始在CSDN上找各种解决办法,并没有任何成果,遇到的问题情况和我都不一样。我一直秉承的思想是问题不能只有解决了才行,我们应该去..._fatal: protocol '鈥渉ttps' is not supported

Tableau 数据可视化之项目一 教育网站指标评估-程序员宅基地

文章浏览阅读3.8k次,点赞15次,收藏25次。项目背景及需求分析详细设计原型效果训练技能点原始数据具体实现制作“均分视图”视图制作“考试成绩”视图制作学校教育水平评估表仪表板各维度视图比较需要创建多层筛选器,先创建参数和计算字段参数可以帮助我们便于切换查看方法一方法二创建“城市地图”视图城市教育水平评估仪表板创建故事项目总..._教育网站指标评估

php使用手册输出语句,YOURPHP使用手册.doc-程序员宅基地

文章浏览阅读77次。您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbspPHP资料YOURPHP使用手册.doc77页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所得收入(下载+内..._yourphp插件

hdfs文件加载进hive表的两种方法_hdfs文件加载到hive表-程序员宅基地

文章浏览阅读3.3k次。1.第一种方法当存储路径与表所在路径不一致时,可以load进去,如果表中字段类型不对应,该字段的值将会为空load data inpath 'hdfs://hadoop01:9000/tmp/sales_info.txt' overwrite into table sales_info partition(dt = '20191215');2.当存储路径与表所在路径一致时,可..._hdfs文件加载到hive表

如何使用docker?-程序员宅基地

文章浏览阅读130次。1.基础环境Centos:7.0/7.4Docker:[docker-18.09.6](https://download.docker.com/linux/static/stable..._add .tar.gz /usr/local/

随便推点

ubuntu apt-get update 失败(源于 https://developer.download.nvidia.com/)_cuda/repos/ubuntu2004/x86_64 release' does not hav-程序员宅基地

文章浏览阅读5.8k次,点赞4次,收藏6次。1.报错现象2.报错分析E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 Release' does not have a Release file.E: The repository 'https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x8..._cuda/repos/ubuntu2004/x86_64 release' does not have a release file.

vCSA storage/archive空间使用100%-程序员宅基地

文章浏览阅读1w次,点赞6次,收藏10次。突然发现vCSA torage/archive空间使用100%,于是决定清理下root@vcenter [ ~ ]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 16G 0 16G 0% /devtmpfs ._storage/archive

LaTeX中aux文件引起的错误之解决方法_latex中aux文件出现\newlabel{fangcheng69\hspace {0.25em -程序员宅基地

文章浏览阅读1.5w次。问题描述本来Tex文件中有一个错误,我修正了该错误。再次编译运行后,仍然会出现错误: 实际上认真阅读错误提示,我们可知:这是仅仅由 aux文件引起的错误。更新tex文件后,没有及时更新aux文件内容,造成二者不一致。问题解决删除aux文件即可解决该问题。出现这种情况的原因多种多样,这里描述的仅仅是一种。请读者在使用的过程中逐渐体会。..._latex中aux文件出现\newlabel{fangcheng69\hspace {0.25em plus 0.125em minus 0.

java正则贪婪匹配指定字符开头和结尾或括号中内容_java正则以中括号开头-程序员宅基地

文章浏览阅读4.7k次。项目中需要这样二种场景,需要贪婪匹配一个字符串,按照相应的匹配规则,替换指定的字符。一、场景一匹配规则1.中括号开头紧接2位数字2.中间部分任意3.右中括号结尾代码如下:String str = "[05经销商风险等级:低风险][06客户户籍地风险等级:中高风险][06销售风险等级:中风险][01不符合增信退回要求][02人行与申请提供手机号码不一致]";//正则Pattern pattern=Pattern.compile("\\[\\d{2}.*?\\]");Matcher matc_java正则以中括号开头

找到的OpenLayers跨域访问WFS服务出现No 'Access-Control-Allow-Origin' header is present...错误的一种解决办法_openlayers加载geoserver的wfs服务异步报错-程序员宅基地

文章浏览阅读9.1k次。在eclipse中部署了一个使用OpenLayers的Java web项目CrossDomainTest,容器为Tomcat 7.0.56.(http://localhost:8080/CrossDomainTest/index.html) 利用Geoserver 2.5.2使用内置容器jetty 6.18发布WFS服务.(http://localhost:8888/geoserver/_openlayers加载geoserver的wfs服务异步报错

npm安装报错解决合集(一)_npm -v 报错-程序员宅基地

文章浏览阅读4.6k次。在新版nodejs已经集成了npm,所以npm也都安装好了。可以通过输入下面命令来测试是否成功安装node -vnpm -v如果安装成功,都会出现版本号用npm -v测试,报错:node:internal/modules/cjs/loader:936 throw err; ^Error: Cannot find module 'D:lcbsoftwareodejsode_modulespminpm-cli.js' at Function.Module._reso_npm -v 报错

推荐文章

热门文章

相关标签