ST意法半导体
直播中

赵敏

7年用户 1061经验值
私信 关注
[问答]

STM32H7选项字节编程导致HAL_OK的原因?如何解决?

我正在尝试更改 STM32H745 的启动顺序以启动 M7 内核并启动 M4 内核。
当然,这在 ST-Link 实用程序中工作正常。
现在我正在代码中尝试这个,但这似乎不起作用。
我认为问题在于将位从高设置为低。
  • FLASH_OBProgramInitTypeDef OBInit;
  • HAL_FLASHEx_OBGetConfig(&OBInit);
  • log_info("Usertype: %08x", OBInit.USERType);
  • if (OBInit.USERType & OB_USER_BCM7) {
  •         log_info("Changing option bytes");
  •         OBInit.USERType &= ~OB_USER_BCM7;
  •         if (HAL_FLASH_OB_Unlock() == HAL_OK)
  •                 if (HAL_FLASH_Unlock() == HAL_OK)
  •                         if (HAL_FLASHEx_OBProgram(&OBInit) == HAL_OK)
  •                                 if (HAL_FLASH_OB_Launch() == HAL_OK)
  •                                         if (HAL_FLASH_OB_Lock() == HAL_OK)
  •                                                 if (HAL_FLASH_Lock() == HAL_OK)
  •                                                 {
  •                                                         log_info("Option bytes changed");
  •                                                         log_info("Requires rebooting");
  •                                                         //NVIC_SystemReset();
  •                                                         return;
  •                                                 }
  •         log_info("Failed changing option bytes");
所有函数都会导致 HAL_OK,但值不会改变。
我错过了什么吗?









>

回帖(1)

陈思阳

2023-1-31 16:09:25
OBInit.USERType &= ~OB_USER_BCM7;
我想你的意思是:
> OBInit.USERType = OB_USER_BCM7;
> OBInit.USERConfig = OB_BCM7_DISABLE;
您发布的内容未对 BOOT_CM7 进行任何修改。
请注意,禁用 M7 内核可能会使调试更加困难,因为它是 SWD 的默认访问端口。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分