你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

调用HAL_FLASH_OB_Unlock()直接进入 HardFaultHandler

[复制链接]
patch1582 提问时间:2026-7-19 16:48 / 未解决

我觉得 HAL FLASH 文档没有整体操作流程概述。 直觉上操作流程应该是: HAL_FLASH_OB_Unlock() 解锁选项字节 HAL_FLASH_Program(...) 烧写 HAL_FLASH_OB_Lock() 上锁 但第一步HAL_FLASH_OB_Unlock()执行就直接崩溃。 HAL_FLASH_Program函数原型: HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 1441 页的 UM1940 手册完全没有说明TypeProgram参数含义、用途、合法取值。仅模糊描述:该参数代表指定地址的编程方式,取值为 FLASH Type Program 系列宏。 手册 234 页列出: FLASH_TYPEPROGRAM_BYTE FLASH_TYPEPROGRAM_HALFWORD FLASH_TYPEPROGRAM_WORD FLASH_TYPEPROGRAM_DOUBLEWORD 但实际测试字节 / 半字 / 字写入全部失效,只能使用双字模式。 翻看stm32g0xx_hal_flash.c源码注释: @brief Program double word or fast program of a row at a specified address. @param TypeProgram Indicate the way to program at a specified address. This parameter can be a value of @ref FLASH_Type_Program @param Data Specifies the data to be programmed TypeProgram = FLASH_TYPEPROGRAM_DOUBLEWORD (64-bit) TypeProgram = FLASH_TYPEPROGRAM_FAST (32-bit row fast program) 内部校验宏仅允许两种值:

define IS_FLASH_TYPEPROGRAM(VALUE) (((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD) ||

((VALUE) == FLASH_TYPEPROGRAM_FAST)) 手册 234 页的单字节 / 半字 / 单字宏不在合法列表里,文档与源码严重脱节。 为什么刚执行HAL_FLASH_OB_Unlock()写入 OPTKEY1 就触发 HardFault?

收藏 评论1 发布时间:2026-7-19 16:48

举报

1个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版