普冉修改复位脚为GPIO功能,添加HAL库操作option byte编程
1.添加几个HAL库文件,包含头文件#include “py32f0xx_hal.h”
2.将py32f0xx_hal_conf.h文件放到工程目录Inc文件夹
3.添加初始化代码,定义宏,如果当前是复位功能,修改为GPIO。
#define RSTPIN_MODE_GPIO
/* #define RSTPIN_MODE_RST */
/* 判断RST管脚 */
#if defined(RSTPIN_MODE_GPIO)
if( READ_BIT(FLASH->OPTR, FLASH_OPTR_NRST_MODE) == OB_RESET_MODE_RESET)
#else
if( READ_BIT(FLASH->OPTR, FLASH_OPTR_NRST_MODE) == OB_RESET_MODE_GPIO)
#endif
{
/* 初始化systick */
HAL_Init();
/* 写OPTION */
APP_FlashOBProgram();
}
4.写option byte函数(对应PY32F002A)
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_IWDG_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_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_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();
}