普冉修改复位脚为GPIO功能,添加HAL库操作option byte编程

文章介绍了如何在STM32(PY32F002A)中通过HAL库将复位引脚修改为GPIO功能,并进行OptionByte编程。首先添加必要的HAL库文件,然后在配置文件中定义宏来判断复位脚模式。接着,初始化系统时钟并根据宏定义设置OptionByte,包括BOR等级、看门狗模式和复位功能。最后,通过HALFLASHOB编程函数实现配置,并在编程后触发复位以加载新的OptionByte设置。
摘要由CSDN通过智能技术生成

普冉修改复位脚为GPIO功能,添加HAL库操作option byte编程


1.添加几个HAL库文件,包含头文件#include “py32f0xx_hal.h”
HAL库文件

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();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值