
void Swap_Bank(void) { FLASH_OBProgramInitTypeDef OBInit; taskENTER_CRITICAL(); //进入临界区 __HAL_FLASH_PREFETCH_BUFFER_DISABLE(); //关闭FLASH预取缓冲区 HAL_FLASH_Unlock(); //解锁用户闪存区域 __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPTVERR); //清除FLASH选项有效性错误标志 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对应存储区2 { OBInit.USERConfig =OB_BFB2_DISABLE; //切换到存储区1 } else OBInit.USERConfig =OB_BFB2_ENABLE; //切换到存储区2 HAL_FLASHEx_OBProgram(&OBInit); HAL_FLASH_OB_Launch(); //启动选项字节加载 HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); taskEXIT_CRITICAL(); //退出临界区 delay_ms(20); NVIC_SystemReset(); } |
关于STM32G474 双BANK的测试问题
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极端输出问题
hrtim里update reset和reset update同时打开不会互相激励吗,另外为什么现在定时器周期值不用-1了
STM32G473 解除写保护失败
问题已解决