[STM32L4] L4的擦除flash的接口执行成功了,就是擦不了

[复制链接]
 楼主| 亡羊补牢 发表于 2024-11-27 21:56 | 显示全部楼层 |阅读模式
FLASH_EraseInitTypeDef eraseInit;
        eraseInit.TypeErase = FLASH_TYPEERASE_PAGES;
        eraseInit.Banks = FLASH_BANK_2;
        eraseInit.Page = 254;
        eraseInit.NbPages = 2;      
        uint32_t PageError;
      
       HAL_FLASH_Unlock();
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |FLASH_FLAG_PGAERR |FLASH_FLAG_PGSERR);

        if(HAL_OK != HAL_FLASHEx_Erase(&eraseInit,&PageError))
        {
                printf("PageError:%d\n",PageError);
               HAL_FLASH_Lock();
        }
        HAL_FLASH_Lock();
        printf("erase ok\n");

大家有遇到过吗,麻烦看看代码有什么问题没?
 楼主| 亡羊补牢 发表于 2024-11-27 21:58 | 显示全部楼层
PageError返回值是0xFFFFFFFF,这是擦除page成功的正确返回值,但是flash就是没有被擦除,还是以前的值
海滨消消 发表于 2024-12-11 11:32 | 显示全部楼层
电源功率不够?
jcky001 发表于 2024-12-11 11:36 | 显示全部楼层
使用万用表检测电路连接
elephant00 发表于 2024-12-11 11:37 | 显示全部楼层
清除Flash操作相关的标志位
laocuo1142 发表于 2024-12-11 12:00 | 显示全部楼层
晶振工作不正常,可能导致Flash擦除操作无法正确执行。

评论

使用内部HSI 都不行  发表于 2025-6-10 14:55
flycamelaaa 发表于 2024-12-11 13:00 | 显示全部楼层
软件或固件问题
powerantone 发表于 2024-12-11 14:00 | 显示全部楼层
固件中可能存在bug
stormwind123 发表于 2024-12-11 16:20 | 显示全部楼层
硬件连接问题
probedog 发表于 2024-12-11 17:00 | 显示全部楼层
Flash芯片可能被设置为保护状态,禁止擦除操作。
probedog 发表于 2024-12-11 19:46 | 显示全部楼层
检查电源滤波电容是否足够大,以确保在擦除Flash时电压稳定。
cr315 发表于 2024-12-11 19:59 | 显示全部楼层
解除Flash保护
classroom 发表于 2024-12-11 21:00 | 显示全部楼层
更换晶振试试
两只袜子 发表于 2024-12-11 21:20 | 显示全部楼层
更新软件或固件
失物招領 发表于 2024-12-21 22:26 | 显示全部楼层
这段代码是用于STM32微控制器的FLASH擦除操作。从你给出的代码片段来看,大体上逻辑是正确的,但确保你已经正确包含了必要的头文件,并且已经初始化了HAL库。例如,HAL_FLASH_Unlock() 和 HAL_FLASHEx_Erase() 等函数需要在HAL库环境下使用。
温室雏菊 发表于 2024-12-21 22:29 | 显示全部楼层
确保eraseInit.BankseraseInit.Page eraseInit.NbPages 等参数的设置是正确的。特别是页号和页数,要确保它们是有效的并且不会超出FLASH的总容量

白马过平川 发表于 2024-12-21 22:32 | 显示全部楼层
确保eraseInit.BankseraseInit.Page eraseInit.NbPages 等参数的设置是正确的。特别是页号和页数,要确保它们是有效的并且不会超出FLASH的总容量

春日负喧 发表于 2024-12-22 02:00 | 显示全部楼层
在擦除操作之前,你正确地解锁了FLASH。但在擦除操作之后,即使出现了错误,你也再次锁定了FLASH。这没有问题,但请注意,如果擦除操作成功,即使在打印“erase ok”之后,你也应该再次锁定FLASH,以确保安全

温室雏菊 发表于 2024-12-22 03:00 | 显示全部楼层
如果HAL_FLASHEx_Erase()函数返回的不是HAL_OK,你正确地检查了PageError并打印了错误信息。这是一个好的做法

风凉 发表于 2024-12-22 05:00 | 显示全部楼层
你正确地清除了FLASH的各种标志位,这是在进行擦除操作前的一个好习惯
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

170

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

37

主题

170

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部