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 regulatoris 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接口擦除了(未验证)

stm32 hal库 rtc 备份 寄存器 备份sram 调试笔记相关推荐

  1. STM32 RTC时钟掉电日期不更新 STM32 HAL库RTC时钟配置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STM32 RTC时钟掉电日期不更新 & STM32 HAL库RTC时钟配置 一.STM32CubeMX RTC配置 二.RT ...

  2. [stm32 HAL库] RTC和BKP驱动

    CubeMX 配置 打开外部时钟 激活时钟和日历 更改RCC时钟为外部低速时钟 以上在CubeMX中的配置就已经完成,点击生成代码即可. 4.这里我需要使用串口进行调试,因此打开了串口一 工程修改 以 ...

  3. 【08】STM32·HAL库开发-HAL库介绍 | STM32Cube固件库介绍 | HAL库框架结构 | 如何使用HAL库及使用注意事项

    目录 1.初识HAL库(了解) 1.1CMSIS简介 1.2HAL库简介 2.STM32Cube固件包浅析(了解) 2.1如何获取STM32Cube固件包? 2.2STM32Cube固件包文件夹简介 ...

  4. STM32 HAL库

    STM32 HAL库 第三章 MDK5 软件入门 bug解决 关键文件介绍 程序仿真 User Keywords 语法提示 代码编辑/查看技巧 第四章 STM32F1 基础知识入门 MDK 下 C 语 ...

  5. STM32 HAL库PID控制电机 第三章 PID控制双电机

    STM32 HAL库PID控制电机 第三章 PID控制双电机 注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复 1 基础配置 1.1 编码器电路图及配置 引脚 定时器通道 PA0 T ...

  6. STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)

    STM32 Embedded Software 工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常 ...

  7. STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机

    STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机(HAL库) 1 电路图 2 TB6612简介 TB6612是双驱动,可同时驱动两个电机 STBY:接单片机的 ...

  8. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  9. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

最新文章

  1. CVPR一区审稿人分享:图像分割论文通关攻略
  2. 面试官:说说Innodb中LRU怎么做的?
  3. [tarjan][树形dp] 洛谷 P2515 软件安装
  4. LeetCode 118. Pascal’s Triangle
  5. python卸载_技术 | Python 包安装和卸载的几种方式
  6. 南开100题C语言(001-010)
  7. 山东计算机考研909,山东大学2018年计算机考研909数据结构考试大纲
  8. 调整 Windows 11 任务栏位置
  9. 保驾护航政务企业上云,云上安全一马当先
  10. 江苏2021高考成绩查询全省排名,2021年江苏高考成绩排名查询系统,江苏高考位次排名查询...
  11. 神思 身份证读卡器(ID)delphi7 源码
  12. 数据结构(四)图 —— 编程作业 07 :公路村村通
  13. 探路者战略合作oTMS 布局智慧物流
  14. Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发《赵云要格斗》(1)
  15. 计算机科学导论(1):绪论
  16. 《语音识别软件》(Nuance Dragon NaturallySpeaking )v12.0 Premium ISO [光盘镜像]
  17. 【veriog】正向计时器设计(FPGA,秒表,时钟,正向计时)
  18. 软件开发毕业4年后,靠自学自动化测试月入2W,本人亲身经历供大家参考
  19. MySQL5.7 Waiting for global read lock
  20. Android里面的settext作用,Android EditText setText方法踩坑实录

热门文章

  1. Improving Nuclei/Gland Instance Segmentation in Histopathology Images by Full Resolution...论文源码笔记
  2. 计算机作业评价表,信息技术课课堂教学评价表
  3. Oracle排名函数(Rank)实例详解
  4. AvgRating 什么意思_lol手游repeat ready check fails什么意思 解决攻略大全
  5. Echarts 绘制甘地图(非重叠方式)
  6. 零基础学建模一年能找到工作吗?
  7. python- _x 、__x、 __xx__、 __x区别
  8. Python之爬取百度地图兴趣点(POI)数据
  9. 【C语言】深度理解-取整
  10. Data truncated for column