打印
[STM32F0]

STM32F030F4P6 上的 Flash 保护

[复制链接]
113|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢动作|  楼主 | 2024-12-9 16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Flash 存储保护
STM32 提供了 Flash 存储的写保护机制,以防止意外的写入操作。你可以通过设置特定的寄存器来保护 Flash 存储区域。

3.2 启用 Flash 写保护
STM32F030F4P6 的 Flash 写保护可以通过 FLASH_OB(Flash Option Bytes)进行配置。

代码示例:启用 Flash 写保护
c
复制代码
// 启用 Flash 写保护
void Enable_Flash_Write_Protection(void) {
    FLASH_OBProgramInitTypeDef obInit;

    HAL_FLASH_Unlock();  // 解锁 Flash 控制寄存器
    HAL_FLASH_OB_Unlock();  // 解锁 Option Byte 寄存器

    obInit.OptionType = OPTIONBYTE_WRP;  // 写保护类型
    obInit.WRPState = OB_WRPSTATE_ENABLE;  // 启用写保护
    obInit.WRPPage = 0x0;  // 对 Flash 区域 0 写保护
    HAL_FLASHEx_OBProgram(&obInit);

    HAL_FLASH_OB_Launch();  // 执行 Option Byte 配置
    HAL_FLASH_Lock();  // 锁定 Flash 控制寄存器
}

使用特权

评论回复
沙发
慢动作|  楼主 | 2024-12-9 16:40 | 只看该作者
禁用 Flash 写保护
如果需要临时关闭写保护以进行编程操作,可以通过以下代码禁用写保护:

代码示例:禁用 Flash 写保护
c
复制代码
// 禁用 Flash 写保护
void Disable_Flash_Write_Protection(void) {
    FLASH_OBProgramInitTypeDef obInit;
   
    HAL_FLASH_Unlock();
    HAL_FLASH_OB_Unlock();
   
    obInit.OptionType = OPTIONBYTE_WRP;
    obInit.WRPState = OB_WRPSTATE_DISABLE;
    obInit.WRPPage = 0x0;  // 禁用写保护
    HAL_FLASHEx_OBProgram(&obInit);
   
    HAL_FLASH_OB_Launch();
    HAL_FLASH_Lock();
}

使用特权

评论回复
板凳
慢动作|  楼主 | 2024-12-9 16:41 | 只看该作者
STM32F030F4P6 的 Flash 存储提供了强大的非易失性存储能力,通过合理的编程技巧,我们可以模拟 EEPROM 的功能,用于存储配置数据、日志记录等信息。需要注意的是,Flash 写入和擦除操作有一定的限制,频繁操作可能会导致 Flash 提前老化,因此在使用时需要采取合适的策略来减少写操作的次数(例如采用环形缓冲区策略)。通过正确配置 Flash 存储和写保护,可以有效地保护数据的完整性和避免意外写入。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

719

帖子

0

粉丝