打印
[STM32F4]

STM32G0和STM32G4 如何把BOOT0当作通用GPIO使用--软件配置

[复制链接]
1709|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zxd121|  楼主 | 2021-6-11 17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在程序中对Option Byte选项字的相关位进行编程,设置BOOT0为软件BOOT0,
程序如下:
MyType mysymbol;
/* USER CODE END 0 */
FLASH_OBProgramInitTypeDef    OBInit;

int main(void)
{

  HAL_Init();

  /* USER CODE BEGIN Init */
   HAL_FLASH_Unlock();
         HAL_FLASH_OB_Unlock();
         HAL_FLASHEx_OBGetConfig(&OBInit);
         OBInit.OptionType = OPTIONBYTE_USER;
         OBInit.USERType   = OB_USER_nBOOT0;
         OBInit.USERConfig = OB_nBOOT0_SET;
         HAL_FLASHEx_OBProgram (&OBInit);
         OBInit.OptionType = OPTIONBYTE_USER;
         OBInit.USERType   = OB_USER_nSWBOOT0;
         OBInit.USERConfig = OB_BOOT0_FROM_OB;
         HAL_FLASHEx_OBProgram (&OBInit);
         HAL_FLASH_OB_Lock();
         HAL_FLASH_Lock();
        //这段代码的功能:重新定义BOOT0,BOOT0的数据不在从外部PIN获取,而是从内部nSWBOOT0+NBOOT0获取,当前定义,BOOT from Main Flash ;
  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
  EventRecorderInitialize(EventRecordAll,1U);
        EventRecorderStart();     //这段代码使能EVENTRECORDER ,可以使用没有SWO口的ST Link  做打印debug ;
  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_TIM1_Init();

使用特权

评论回复
评论
xyz549040622 2021-6-11 23:05 回复TA
支持一下! 
沙发
aeqw| | 2024-6-25 14:33 | 只看该作者
請教一下,如果連main都跑不到,還是只能從CUBEprogrammer去修改Option Byte了吧?

使用特权

评论回复
板凳
LOVEEVER| | 2024-6-25 19:09 | 只看该作者
把BOOT0当作通用GPIO使用需要确认boot0引脚的复用范围

使用特权

评论回复
地板
Candic12e| | 2024-7-13 14:17 | 只看该作者
没必要把这种特殊接口作为通用io来操作吧

使用特权

评论回复
5
Betty996| | 2024-7-13 15:25 | 只看该作者
一般来说,都是不用boot0的,这个很有风险

使用特权

评论回复
6
Carina卡| | 2024-7-13 16:34 | 只看该作者
这种配置之后,会有啥风险吗?

使用特权

评论回复
7
Allison8859| | 2024-7-13 17:38 | 只看该作者
如果把boot0配置成普通IO之后,需要还原的话咋弄?

使用特权

评论回复
8
Charlotte夏| | 2024-7-13 19:44 | 只看该作者
要禁用启动模式选择功能,需要配置选项字节(Option Bytes)。这通常需要使用STM32的编程工具(如ST-Link Utility)来修改选项字节

使用特权

评论回复
9
Betty1299| | 2024-7-13 20:52 | 只看该作者
使用ST-Link或其他编程工具连接到STM32微控制器。在编程工具中,找到选项字节配置选项。将nBOOT0选项设置为1,这将禁用BOOT0引脚的启动模式选择功能

使用特权

评论回复
10
Emily999| | 2024-7-14 09:08 | 只看该作者
在启动代码或初始化代码中,将BOOT0引脚配置为通用输入或输出模式,并且还要改关键字

使用特权

评论回复
11
Carmen7| | 2024-7-14 10:11 | 只看该作者
确保在启动时不会使用BOOT0引脚来选择启动模式。可以通过配置选项字节(Option Bytes)来实现这一点

使用特权

评论回复
12
Belle1257| | 2024-7-14 11:05 | 只看该作者
正常就拉低就完事儿了,没必要占这个IO的

使用特权

评论回复
13
Annie556| | 2024-7-14 12:30 | 只看该作者
估计占用之后会不会出现程序失灵之后,用不了boot0并且也不能用ISP升级程序呢?

使用特权

评论回复
14
雨果喝水| | 2024-8-29 12:35 | 只看该作者
在进行选项字节编程之前,您需要解锁闪存和选项字节寄存器,以允许修改选项字节配置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

6

帖子

1

粉丝