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

STM32 dual bank 的bank切换问题

[复制链接]
angelzhang 提问时间:2023-8-30 14:00 / 未解决

在项目中使用到STM32G474RE的dual bank的IAP升级功能,编写一份程序,分别下载到地址:0x08000000和地址:0x08040000中,通过按键进行bank的切换,通过指示灯显示在哪个bank中运行,运行结果:在bank1中程序可以正常运行,但是一旦程序跳入bank2,程序就无任何响应;切换bank的代码如下:

void switch_bank(void) { HAL_FLASH_Unlock(); __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR); HAL_FLASH_OB_Unlock();

HAL_FLASHEx_OBGetConfig(&OBInit);

OBInit.OptionType = OPTIONBYTE_USER; OBInit.USERType = OB_USER_BFB2; if (((OBInit.USERConfig) & (OB_BFB2_ENABLE)) == OB_BFB2_ENABLE) / BANK1 active for boot / { OBInit.USERConfig = OB_BFB2_DISABLE; } else { OBInit.USERConfig = OB_BFB2_ENABLE;

}

if(HAL_FLASHEx_OBProgram(&OBInit) != HAL_OK) { ;

}

if(HAL_FLASH_OB_Launch()!= HAL_OK) { ; }

HAL_FLASH_OB_Lock();

HAL_FLASH_Lock();

}

求各位大神帮忙看下,问题出在哪里,十分感谢!!!

收藏 评论3 发布时间:2023-8-30 14:00

举报

3个回答
butterflyspring 回答时间:2023-8-30 16:50:29
楼主可以看看,BANK2中的APP编译时是否选择了偏移地址。如没有设置偏移地址,则程序无法运行起来。

小方法 : 切换时可以用按键触发。 这样就可以停下来用烧录器看看相关配置是否是期望的了。
angelzhang 回答时间:2023-8-31 08:57:24

butterflyspring 发表于 2023-8-30 16:50
楼主可以看看,BANK2中的APP编译时是否选择了偏移地址。如没有设置偏移地址,则程序无法运行起来。</p>
<p>小方法 ...

谢谢回复!bank2中我设置了偏移地址:0x08000000;试了好多方法,就是跳转到bank2中运行不起来?不知道哪地方还有问题;

butterflyspring 回答时间:2023-8-31 10:03:22
手册中有提到BANK2 的起始地址 0x0804 0000, 楼主再核对一下。
这个地址如果编译时没有设置,那么生成的代码是无法正确寻址的。
STM32G474 BANK2 ADDRESS.PNG

所属标签

相似问题

官网相关资源

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