帛灿灿 发表于 2025-3-16 07:54

HAL_FLASH_Unlock() 和 HAL_FLASH_Lock() 需要确保调用正确,特别是在操作之前和之后清除相关标志。

童雨竹 发表于 2025-3-16 07:55

你可以检查一下 STM32 的 Option Bytes,看是否启用了某些写保护或者限制了 Flash 编程。

万图 发表于 2025-3-16 07:56

在 Flash 写入之前确保没有其他中断打断操作,尤其是优先级比较高的中断。

Wordsworth 发表于 2025-3-16 07:57

试试将 Key_Flash 改为某个明确的地址值,看是否是因为使用了 &Key_Flash 导致的问题。

Bblythe 发表于 2025-3-16 07:58

可以试着将数据写入不同的 Flash 区域,确认是不是区域本身的访问权限问题。

Pulitzer 发表于 2025-3-16 07:59

看一下是否 FLASH_TYPEPROGRAM_DOUBLEWORD 对应的地址是合适的,有些区域不允许双字写入。

Uriah 发表于 2025-3-16 08:00

HAL_FLASH_Program 在失败时不会抛出异常,可以通过查看返回的状态或者 FLASH_SR 标志来诊断错误。

Clyde011 发表于 2025-3-16 08:01

你可以通过 STM32CubeMX 生成的初始化代码来确认是否对 Flash 访问有正确的配置,尤其是时钟和权限设置。

Moon月 发表于 2025-3-24 17:32

可能是没有解锁就写入,或者是没有擦除就写入。
页: 1 [2]
查看完整版本: 写FLASH失败