
在项目中使用到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(); } 求各位大神帮忙看下,问题出在哪里,十分感谢!!! |
最近在做单极倍频SPWM
STM32G474, I2C设备地址,总出现多余地址0x20,是什么原因?
为什么STM32G431的串口用不了2.5M的波特率
上电连接USB显示DFU模式
STM32G491RE上电出现DFU模式
STM32G431的3.3V引脚对地电阻变小
STM32G473RC timer8的CCDS bit, Capture/Compare DMA selection.
STM32G431 数据手册上有个图有点不理解
STM32G473RC多个定时器同步的问题
STM32CubeG4 HAL库 V1.6.1 版本中的 stm32g4xx_hal.h 文件宏定义BUG
小方法 : 切换时可以用按键触发。 这样就可以停下来用烧录器看看相关配置是否是期望的了。
谢谢回复!bank2中我设置了偏移地址:0x08000000;试了好多方法,就是跳转到bank2中运行不起来?不知道哪地方还有问题;
这个地址如果编译时没有设置,那么生成的代码是无法正确寻址的。