STM32H725 备份RAM使用

一、备份SRAM地址域

地址映射:0x38800000 - 0x38800FFF

二、使用初始化

使用备份SRAM前,需要最如下初始化:

#if (0U != BACKUP_SRAM_PWRER_BAT_ENABLE)
    /* 备份RAM 电源使能 */
    HAL_PWR_EnableBkUpReg();
#else
    /* 备份RAM 电源使能 */
    HAL_PWR_DisableBkUpReg();
#endif
    /* 使能备份RAM 时钟 */
    __HAL_RCC_BKPRAM_CLK_ENABLE();

    /* 使能对备份RAM的访问权限 */
    HAL_PWR_EnableBkUpAccess();

关于宏 BACKUP_SRAM_PWRER_BAT_ENABLE 含义:在Vbat有接入的前提,使能 :VDD 失电后,备份 RAM 能够保存掉电前的数据; 未使能 : 备份 RAM 无法保存掉电前的数据

手册中相关寄存器描述:

PWR 控制寄存器 1 (PWR_CR1)
位 8 DBP:禁止备份域写保护 (Disable backup domain write protection)
在复位状态下,RCC_BDCR 寄存器、RTC 寄存器(包括备份寄存器)以及 PWR_CR2 寄
存器的 BREN 和 MOEN 位均受到写访问保护。必须将此位置 1 才能使能对这些寄存器的写
访问。
0:禁止对 RTC、RTC 备份寄存器和备份 SRAM 的访问
1:使能对 RTC、RTC 备份寄存器和备份 SRAM 的访问

RCC AHB4 时钟寄存器 (RCC_AHB4ENR)
位 28 BKPRAMEN:备份 RAM 时钟使能 (Backup RAM Clock Enable)
由软件置 1 和复位。
0:禁止备份 RAM 时钟(复位后的默认值)
1:使能备份 RAM 时钟。

三、读、写备份SRAM

void bsp_backup_sram_write(uint32_t addr, uint32_t data)
{
    /* 检查备份RAM地址是否合法 */
    if ((addr >= BACKUP_SRAM_BASE_ADDRESS) && (addr <= BACKUP_SRAM_END_ADDRESS))
    {
        *(__IO uint32_t *)addr = data;
    }
}

uint32_t bsp_backup_sram_read(uint32_t addr)
{
    uint32_t data = 0;

    /* 检查备份RAM地址是否合法 */
    if ((addr >= BACKUP_SRAM_BASE_ADDRESS) && (addr <= BACKUP_SRAM_END_ADDRESS))
    {
        data = *(__IO uint32_t *)addr;
    }

    return data;
}

我这边是4字节读写,根据手册描述,最小支持单字节读写。

四、其他

关于备份SRAM,手册中还有<读保护>、<侵入事件>等等描述,后续整理输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值