把Air001复位脚配置成普通IO
把Air001复位脚配置成普通IO,官方有例程,路径在air001\ModuleDemo\Flash\Example_HAL\FLASH_OptionByteWrite_RST,配置函数代码如下:
static void APP_FlashOBProgram(void)
{
FLASH_OBProgramInitTypeDef OBInitCfg;
HAL_FLASH_Unlock(); /* 解锁FLASH /
HAL_FLASH_OB_Unlock(); / 解锁OPTION */
/* 配置OPTION选项 */
OBInitCfg.OptionType = OPTIONBYTE_USER;
OBInitCfg.USERType = OB_USER_BOR_EN | OB_USER_BOR_LEV | OB_USER_IWDG_SW | OB_USER_WWDG_SW | OB_USER_NRST_MODE | OB_USER_nBOOT1;
if defined(RSTPIN_MODE_GPIO)
/* BOR不使能/BOR上升3.2,下降3.1/软件模式看门狗/GPIO功能/System memory作为启动区 */
OBInitCfg.USERConfig = OB_BOR_DISABLE | OB_BOR_LEVEL_3p1_3p2 | OB_IWDG_SW | OB_WWDG_SW | OB_RESET_MODE_GPIO | OB_BOOT1_SYSTEM;
else
/* BOR不使能/BOR上升3.2,下降3.1/软件模式看门狗/RST功能/System memory作为启动区 */
OBInitCfg.USERConfig = OB_BOR_DISABLE | OB_BOR_LEVEL_3p1_3p2 | OB_IWDG_SW | OB_WWDG_SW | OB_RESET_MODE_RESET | OB_BOOT1_SYSTEM;
endif
/* 启动option byte编程 */
HAL_FLASH_OBProgram(&OBInitCfg);
HAL_FLASH_Lock(); /* 锁定FLASH /
HAL_FLASH_OB_Lock(); / 锁定OPTION */
/* 产生一个复位,option byte装载 */
HAL_FLASH_OB_Launch();
}
使用的时候需要先定义:#define RSTPIN_MODE_GPIO
要注意的问题是,如果不定义#define RSTPIN_MODE_GPIO,而是每次强制执行配置的话,将会把芯片“锁死”,导致无法在Keil中直接下载程序,包括全擦除也无法进行的结果!
实际应用时,需要检测一下当前的复位脚是否为普通GPIO,如果是,则不执行配置;不是才执行配置。
即:
if( READ_BIT(FLASH->OPTR, FLASH_OPTR_NRST_MODE) == OB_RESET_MODE_RESET)
APP_FlashOBProgram();
2026.8.8

欢迎关注本人公众号,了解更多。

浙公网安备 33010602011771号