
在项目中使用到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(); } 求各位大神帮忙看下,问题出在哪里,十分感谢!!! |
关于STM32G474 双BANK的测试问题
STM32G474CBT6上电瞬间用示波器测得io口产生较大电压(浪涌电压)
STM432G4单片机IAP程序+上位机
STM32G473 flash擦除时程序卡死
STSPIN32G4内部驱动电压输出问题
comp输出用于tim1刹车,消隐源和pwm输出是不是得是同一个TIM?
STM32G431内部运放1和2输出连接的ADC为什么不是OPAMP?
workbench6.3.2生成的代码,无法用pilot电机参数识别,无法通讯
stm32G474的flash模式如何判定?single bank 和dual bank
STM32G474高精度定时器HRTIM配置死区互补PWM极端输出问题
小方法 : 切换时可以用按键触发。 这样就可以停下来用烧录器看看相关配置是否是期望的了。
谢谢回复!bank2中我设置了偏移地址:0x08000000;试了好多方法,就是跳转到bank2中运行不起来?不知道哪地方还有问题;
这个地址如果编译时没有设置,那么生成的代码是无法正确寻址的。