0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32读取boot引脚状态

科技绿洲 来源:网络整理 作者:网络整理 2024-08-22 09:48 次阅读

STM32微控制器中,Boot引脚(通常指的是BOOT0和BOOT1引脚)的状态决定了设备启动时的引导模式。这些引脚的状态在复位时被读取,并据此选择启动哪块存储器。比如,STM32F103系列微控制器,其BOOT0引脚用于在内部Flash、系统存储器或SRAM之间选择启动源,而BOOT1引脚在某些系列中用于启用从内置SRAM启动的选项(但请注意,不是所有STM32系列都支持通过BOOT1改变启动源)。

读取Boot引脚状态

在STM32中,Boot引脚的状态并不是直接通过一个寄存器读取的,因为它们在复位期间被用于配置启动模式,并且一旦复位完成,这些引脚的状态就不再直接反映在系统寄存器中。然而,你可以通过配置GPIO端口来“间接”读取这些引脚的状态,但请注意,这实际上是在查看引脚当前的电平状态,而不是它们在复位时决定启动模式的状态。

示例:配置GPIO读取BOOT0引脚状态

以下是一个基于STM32F103系列的示例,展示如何通过配置GPIO端口来读取BOOT0引脚的状态(注意,这仅代表引脚当前的电平,不代表启动时的配置)。

  1. 初始化GPIO端口 :首先,你需要将BOOT0引脚配置为GPIO输入模式。
  2. 读取引脚状态 :然后,你可以通过读取该GPIO端口的输入数据寄存器来获取BOOT0引脚的状态。
c复制代码#include "stm32f10x.h"  void GPIO_Init(void) {      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟      GPIO_InitTypeDef GPIO_InitStructure;      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // BOOT0引脚连接到GPIOA的第0脚      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入      GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA  }  uint8_t ReadBoot0Pin(void) {      if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_SET) {          return 1; // BOOT0为高电平      } else {          return 0; // BOOT0为低电平      }  }  int main(void) {      GPIO_Init(); // 初始化GPIO      uint8_t boot0Status = ReadBoot0Pin(); // 读取BOOT0引脚状态      // 这里可以根据boot0Status做进一步处理      while (1) {          // 主循环      }  }

请注意,上述代码示例是在STM32F10x标准外设库的基础上编写的。如果你使用的是HAL库或LL库,初始化GPIO的代码将会有所不同。

此外,再次强调,这种方法读取的是BOOT0引脚当前的电平状态,而不是它在复位时用于确定启动模式的电平状态。如果你需要基于Boot引脚的状态来改变程序的行为,通常这种决策应该在固件启动的早期阶段(如启动文件或主函数开始处)就完成。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7485

    浏览量

    163795
  • STM32
    +关注

    关注

    2270

    文章

    10897

    浏览量

    355820
  • 引脚
    +关注

    关注

    16

    文章

    1195

    浏览量

    50430
  • Boot
    +关注

    关注

    0

    文章

    149

    浏览量

    35831
收藏 人收藏

    评论

    相关推荐

    STM32F769I-DISCO在代码中为什么无法控制引脚状态

    明明数据手册里标的是D7对应PK4引脚,也就是设置GPIOK GPIO PIN 4才应该是改变这个引脚状态,但是之后实验发现改变GPIOJ 3反而是改变这个PK4的状态?而且在main函数里不管写
    发表于 03-19 06:28

    STM8的PB5无法读取脚状态是哪里的问题?

    把PB5设计为GPIO时,无法读取脚状态,使用GPIO_ReadInputPin读取状态时,无法管脚是高还是低读出来的状态都是低,不知道是
    发表于 05-06 07:16

    在关断状态下CYT2B93的引脚状态是什么?

    我使用的是 CYT2B93,我对关断状态下的引脚状态很好奇。 (关闭电源) 我将 CYT2B93 GPIO 引脚连接到外部上拉(5V)。 当 MCU 处于开机状态时,GPIO PI
    发表于 05-20 06:37

    请问TPA3118触发过流等保护的时候mute引脚状态是什么?

    ,由于试验环境原因,也不方便实测验证。请问TPA3118 触发过流等保护的时候mute引脚状态是什么?会是因为TPA3118 触发过流等保护的时候mute引脚状态也会拉高,这样导致所有TPA3118都不能工作?
    发表于 10-28 08:14

    STM32F103芯片掉电复位状态下GPIO引脚状态

    STM32F103芯片复位状态下GPIO引脚状态应为默认值低电平,但是我测试的时候发现在单片机刚开始掉电时,单片机的引脚输出了高电平。因此在设计电路时应考虑单片机电源应比其他电源掉电慢
    发表于 02-27 00:06

    AM3354 boot 模式读取后 配置引脚状态问题

    本帖最后由 一只耳朵怪 于 2018-6-5 09:55 编辑 Hi,大家好,请教一个有关boot配置引脚问题:我们知道,boot模式是在PWRONRETn输入引脚上升沿有效时通
    发表于 06-04 02:28

    请问ADXL362初始化后的引脚状态是什么状态

    各位工程师:大家好!最近在用ADXL362做一款手环设备。请问大家一下,当芯片上电初始化后各个引脚状态是什么状态?希望得到大家的帮助或者相关的资料,谢谢大家 以上宏雁
    发表于 08-17 06:59

    如果我不使用它们的引脚状态是什么?

    我有两个关于引脚状态的问题。1.如果我有一个具有500个GPIO引脚的FPGA芯片,我使用100个引脚。左侧400 GPIO引脚不在我的设计中,因此我不对它们进行任何配置(在约束文件中
    发表于 03-04 13:41

    fpga板上的输出引脚状态是什么

    当未使用的输出在约束文件中注释掉并且显然未在项目中声明时,fpga板上的输出引脚状态是什么 - 特别是对于Vivado 14.4 Verilog。在一些示例中,未使用的输出端口在约束文件中明确声明
    发表于 04-01 07:26

    stm32如何在一条语句中对多个引脚状态进行定义

    如题,在做项目时,希望某几个引脚状态同步变化,比如4,5,6一共3个pin。如果使用GPIO_SetBits等语句,不能同步对这几个引脚进行设置,因为这几个引脚状态不一定是相同的,可能为0,也可能
    发表于 07-23 16:16

    S32K144为什么无法使用“PINS_DRV_ReadPins(PTA);”读取引脚状态

    我是 nxp S32K144 微控制器的新手。我无法使用“PINS_DRV_ReadPins(PTA);”读取引脚状态 .有人可以告诉我我能做什么吗
    发表于 03-24 07:51

    STM32F769I-DISCO无论是toggle还是write函数都无法改变初始配置好的引脚状态要怎么解决?

    明明数据手册里标的是D7对应PK4引脚,也就是设置GPIOK GPIO PIN 4才应该是改变这个引脚状态,但是之后实验发现改变GPIOJ 3反而是改变这个PK4的状态?而且在main函数里不管写
    发表于 08-07 07:28

    BOOT1和BOOT0引脚状态

    所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚
    的头像 发表于 07-06 16:32 7707次阅读

    stm32boot0和boot1对应哪个p引脚

    STM32系列微控制器是一种广泛应用于嵌入式系统领域的32位微控制器。在STM32系列微控制器中,BOOT0和BOOT1是两个重要的引脚,它
    的头像 发表于 08-22 09:40 2970次阅读

    STM32引脚中的BOOT1在哪里

    BOOT1引脚是一个用于选择STM32微控制器启动模式的引脚。当系统上电或复位时,BOOT1的电平
    的头像 发表于 08-22 09:43 1858次阅读