洋桃电子STM32F407单片机入门教程笔记三:备用SRAM读写指南

此文档作为对洋桃电子STM32F407单片机视频的整理,B站链接:第17集)备用SRAM读写_哔哩哔哩_bilibili

1. 三种存储器的区别

使用Flash保存数据可以在单片机断电后保持数据永久不丢失,但单片机运行在偶尔需要保存一次数据的场合是没有问题的,但如果单片机长期运行在需要频繁保存数据的场合,会在很短时间达到Flash擦写上限。

为了解决频繁擦写和断电后不丢失的问题,STM32F4系列单片机内置了一块4KB容量的备用SRAM,SRAM存储器的特点是可无限次读写,但是断电后会丢失数据,只要给SRAM添加一个备用电源就可实现无限读写且不丢失数据,备用SRAM就是一个带有备用电源的SRAM存储器。

2. 备用SRAM简介

备用电路也叫备用域。

电源切换开关可以在逻辑电源VDD有电时使用逻辑电源给备用域供电,当逻辑电源断电后可自动切换到VBAT引脚外接备用电池给备用域供电,当逻辑电源上电后又将切换成逻辑电源供电以节省备用电池点电量,也就是说只要备用电池点亮充足,备用SRAM的数据就不会丢失。

2.1 备用SRAM外设地址映射表

上图是SRAM外设地址映射表,它的地址范围是0x40024000~0x40024FFF,一共有4KB容量。

3. 读写备用SRAM方法

3.1 HAL库中与备用域相关的库

在读写备用SRAM之前要先调用相关HAL库函数,开启备用SRAM的电源和时钟,备用SRAM的初始化要添加4个HAL库函数。

①函数:使能PWR电源时钟函数,它的作用是开启整个备用域部分的时钟,只有开启PWR时钟备用域内的各功能才能正常工作。包括RTC实时时钟、备用寄存器和备用SRAM。

②函数:使能备用域读写函数,即关闭备用域的写保护,为了防止在程序错乱时对备用域的误操作,在单片机复位后会开启备用域的写保护,禁止程序对备用域的操作,当我们要读写备用域中的备用SRAM时,先要使能备用域的操作。

③函数:使能备用SRAM时钟函数,第一个使能的是整个备用域的时钟,但备用域中的备用SRAM还需要再单独使能一次。

④函数:使能备用域调压器函数,备用域调压器是电源管理原理图中的“内部电源切换开关”,只有开启它才能在逻辑电源VDD断电时自动切换到备用电池供电。

开启以上4个功能后就可以正常读写备用SRAM。

3.2 直接读写备用SRAM方法

无需使用HAL库函数,仅使用对指定地址的读写语句。

例如将8位变量a中的数据写入备用SRAM使用①,其中的0x40024000是备用SRAM的地址。

将备用SRAM读出的数据放入8位变量a中使用②,其中的0x40024000是备用SRAM的地址。

4. 备用SRAM驱动程序

4.1 bkpsram.h文件的内容

备用SRAM的起始地址和结束地址用于判断写操作的地址是否超出备用SRAM的地址范围。

4.2 bkpsram.c文件的内容

备用SRAM初始化函数中调用的四个HAL库函数正是必须开启的四个功能设置,调用的四个HAL库函数正是必须开启的四个功能设置。

4.3 main.c文件的内容

注意:此地址必须在备用SRAM的地址范围。

将程序编译后下载到板子,按键控制LED的状态将保存到备用SRAM中。

物联沃分享整理
物联沃-IOTWORD物联网 » 洋桃电子STM32F407单片机入门教程笔记三:备用SRAM读写指南

发表评论