明解STM32—GPIO应用设计篇之API函数及配置使用技巧

这篇具有很好参考价值的文章主要介绍了明解STM32—GPIO应用设计篇之API函数及配置使用技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

        本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。

        了解过STM32的GPIO相关的理论知识,这样在应用GPIO开发过程中,能更好的理解GPIO的特点,应用起来会更加的得心应手。

        后续将从以下图1中所示的几个方面对GPIO应用设计中的步骤展开介绍。本篇先介绍GPIO的基本API函数定义,配置初始化的流程,以及使用技巧;针对将GPIO的引脚用于外部中断的功能将作为单独的一篇进行详细的讨论介绍。

明解STM32—GPIO应用设计篇之API函数及配置使用技巧

图1 GPIO应用设计


二、API函数

        STM32有多种类型的库,本节所介绍的STM32的GPIO函数接口是STM32标准库的函数接口,接口总共分为4种类型,如图2所示。

明解STM32—GPIO应用设计篇之API函数及配置使用技巧

图2 GPIO库函数接口分类

1、关键参数

        在详细介绍各个API函数接口功能之前,我们需要对函数接口中使用到的关键的几个参数进行分析。

(1)、GPIO_TypeDef* GPIOx

        这个参数是用于指定需要具体的GPIO端口号定义,参数的范围为GPIOA~GPIOK。

(2)、GPIO_InitTypeDef* GPIO_InitStruct

        这个参数是GPIO端口需要初始化的功能参数的结构体指针,下面我们看看这个结构体的定义。

1 typedef struct
2 {
3     uint32_t GPIO_Pin;            //GPIO端口的引脚
4     GPIOMode_TypeDef GPIO_Mode;   //GPIO的端口模式                                         
5     GPIOSpeed_TypeDef GPIO_Speed; //GPIO的输出速度频率
6     GPIOOType_TypeDef GPIO_OType; //GPIO输出时的类型
7     GPIOPuPd_TypeDef GPIO_PuPd;   //GPIO上下拉电阻设置                                       
8 }GPIO_InitTypeDef;
明解STM32—GPIO应用设计篇之API函数及配置使用技巧

  (a)、GPIO端口的引脚:可选范围为GPIO_Pin_0~GPIO_Pin_15,也可以选所有引脚GPIO_Pin_All。

  (b)、GPIO的端口模式:用于设置GPIO的端口模式,可选的端口模式如下。

1 typedef enum
2 {
3     GPIO_Mode_IN  = 0x00, //普通IO口输入
4     GPIO_Mode_OUT = 0x01, //普通IO口输出
5     GPIO_Mode_AF  = 0x02, //管脚复用功能
6     GPIO_Mode_AN  = 0x03  //模拟输入,用于ADC功能
7 }GPIOMode_TypeDef;
明解STM32—GPIO应用设计篇之API函数及配置使用技巧

        (c)、GPIO的输出速度频率:当GPIO引脚用于普通功能输出或复用功能输出时,GPIO的输出速度频率,可选的输出速率如下。

1 typedef enum
2 {
3     GPIO_Low_Speed     = 0x00, //GPIO_Speed_2MHz
4     GPIO_Medium_Speed  = 0x01, //GPIO_Speed_25MHz
5     GPIO_Fast_Speed    = 0x02, //GPIO_Speed_50MHz
6     GPIO_High_Speed    = 0x03  //GPIO_Speed_100MHz
7 }GPIOSpeed_TypeDef;

        速度高的IO耗电大、噪声也大,速度低的IO耗电小、噪声也小。使用合适的速度可以降低功耗和噪声。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能,也可以降低功耗。当然如果要输出较高频率的信号,但却选用了较低频率的速度,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配。

        (d)、GPIO输出时的类型:当GPIO引脚用于普通功能输出或复用功能输出时,可选择设置的GPIO的输出结构类型有如下。

1 typedef enum
2 {
3     GPIO_OType_PP = 0x00, //推挽结构
4     GPIO_OType_OD = 0x01 //开漏结构
5 }GPIOOType_TypeDef;

        推挽输出时,可以输出高或者低电平;开漏输出时,如果要输出高电平,则需要在芯片内部配置上拉电阻(弱上拉)或者在芯片IO外部连接上拉电阻。

        (e)、GPIO上下拉电阻设置:可以为GPIO端口的引脚选择设置是否具备带上拉或下拉电阻功能。

1 typedef enum
2 {
3     GPIO_PuPd_NOPULL = 0x00, //无上拉或者下拉
4     GPIO_PuPd_UP     = 0x01, //带上拉电阻
5     GPIO_PuPd_DOWN   = 0x02 //带下拉电阻
6 }GPIOPuPd_TypeDef;

        STM32芯片GPIO的上拉电阻和下拉电阻最小值,典型值和最大值如下:

明解STM32—GPIO应用设计篇之API函数及配置使用技巧

 

(3)、uint16_t GPIO_PinSource和uint8_t GPIO_AF

        这两个参数都是GPIO端口引脚需要配置成复用功能引脚用到的参数。

        GPIO_PinSource:指需配置的复用功能引脚源,可选范围GPIO_PinSource0~GPIO_PinSource15。

        GPIO_AF:指该引脚具体需要配置的功能,具体配置功能要看实际应用需求,例如需要配置成SPI1功能的引脚,那么就选GPIO_AF_SPI1。

2、函数接口

        下面就对具体的函数接口进行逐个的介绍。由于使用的是STM32的标准库,GPIO 相关的函数及配置定义和可以调用的接口放置在官方提供的标准库文件 stm32fxx_gpio.c和头文件 stm32fxx_gpio.h 文件中。

(1)、void GPIO_DeInit(GPIO_TypeDef* GPIOx);

        作用:将GPIO端口设置成初始的默认状态,相当于复位GPIO端口,默认的状态为输入浮空的状态。

        举例:GPIO_DeInit(GPIOA),将GPIOA端口所有引脚复位到默认状态。

(2)、void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

        作用:将GPIO端口引脚进行功能状态初始化。

        举例:将GPIOA的pin1引脚设为普通输出功能,IO驱动速率可达50MHz,推挽模式,带上拉电阻。

1 gpio_InitStruct.GPIO_Pin = GPIO_Pin_1;
2 gpio_InitStruct. GPIO_Mode = GPIO_Mode_OUT;
3 gpio_InitStruct.GPIO_Speed = GPIO_Fast_Speed;
4 gpio_InitStruct. GPIO_OType = GPIO_OType_PP;
5 gpio_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
6 GPIO_Init(GPIOA, &gpio_InitStruct);

 (3)、void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);

        作用:获取GPIO端口的所有引脚的一个默认状态,可应用于某个GPIO端口上。该函数内部默认的引脚默认状态如下。

1 GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
2 GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN;
3 GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
4 GPIO_InitStruct->GPIO_OType = GPIO_OType_PP;
5 GPIO_InitStruct->GPIO_PuPd = GPIO_PuPd_NOPULL;

        举例:使用gpio_InitStruct快速获取到了引脚的默认状态值。

1 GPIO_StructInit(&gpio_InitStruct);

(4)、void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:将指定GPIO端口引脚当前的配置进行锁定,锁定后该引脚配置不能被修改,只有等下次MCU复位锁定才能释放。

        举例:锁定GPIOA的管脚pin1配置不被修改。

1 GPIO_PinLockConfig(GPIOA, GPIO_Pin_1);

(5)、uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:为当GPIO的相应管脚配置成输入时,读取该GPIO端口下的相应引脚输入电平值。

        举例:读取GPIOA的pin1引脚输入电平值。

1 status = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1);

(6)、uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);

        作用:为当GPIO配置成输入时,读取该GPIO端口下的所有引脚输入电平值。

        举例:读取GPIOA端口所有引脚的输入电平值。

1 status = GPIO_ReadInputData(GPIOA);

(7)、uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:为当GPIO的相应管脚配置成输出时,读取该GPIO端口下的相应引脚输出电平值。

        举例:读取GPIOA的pin1引脚输出电平值。

1 status = GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1);

(8)、uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

        作用:为当GPIO配置成输出时,读取该GPIO端口下的所有引脚输出电平值。

        举例:读取GPIOA端口所有引脚的输出电平值。

1 status = GPIO_ReadOutputData(GPIOA);

(9)、void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:置位相应GPIO端口引脚的电平值。

        举例:将GPIOA的pin1管脚电平置为1。

1 GPIO_SetBits(GPIOA, GPIO_Pin_1);

        也可以用于多个引脚电平的置位。

1 GPIO_SetBits(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);

(10)、void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:清零相应GPIO端口引脚的电平值。

        举例:将GPIOA的pin1管脚电平置为0。

1 GPIO_ResetBits(GPIOA, GPIO_Pin_1);

        也可以用于多个引脚电平的清零。

1 GPIO_ResetBits(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);

(11)、void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);

        作用:将GPIO端口的指定管脚电平置1或置0。

        举例:将GPIOA的pin1管脚电平置为1。

1 GPIO_WriteBit(GPIOA, GPIO_Pin_1, 1);

        也可以用于多个引脚电平操作。

1 GPIO_WriteBit(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3, 1);

(12)、void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

        作用:将GPIO端口的所有管脚电平置1或置0。

        举例:将GPIOA端口的所有管脚电平置为1。

1 GPIO_Write(GPIOA, 1);

(13)、void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

        作用:翻转指定GPIO引脚的输出电平,即0变为1,1变为0。

        举例:翻转GPIOA的pin1管脚电平值。

1 GPIO_ToggleBits(GPIOA , GPIO_Pin_1);

(14)、void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);

        作用:将GPIO的指定管脚配置成复用功能管脚。

        举例:将GPIOA的pin9管脚配置成串口USART1的功能管脚。

1 GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);

三、配置流程

        配置流程主要在实际的驱动配置中对GPIO进行初始化的操作,根据实际项目应用开发中的芯片GPIO引脚的定义,进行合理的配置。图3所示为GPIO的基本配置操作流程。

明解STM32—GPIO应用设计篇之API函数及配置使用技巧

图3 GPIO配置流程

(1)、使能对应GPIO的时钟

        在配置GPIO的开始,首先需要将对应的GPIO模块的时钟打开,这样才能为GPIO工作提供动力源,因此只有先将GPIO的时钟打开才能使GPIO正常的工作。

        关于STM32芯片内部整体的时钟系统,可以回顾之前明解STM32时钟系统的文章介绍。STM32的GPIO模块是挂载在芯片内部AHB1总线(AHB:高级高性能总线)上的外设,因此就需要打开GPIO在AHB1总线上对应的时钟。AHB1总线上的外设时钟开关在STM32提供的标准库函数中通过函数 RCC_AHB1PeriphClockCmd ()来实现的。例如调用:

1 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

         这样就将GPIOA的时钟打开,也可以同时打开多个GPIO端口的时钟:

1 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB, ENABLE);

(2)、引脚功能配置

        接下来对GPIO引脚的配置是需要根据实际的项目应用要求,根据各个芯片管脚的定义来对引脚的功能进行合理的配置,主要是根据引脚是使用成普通IO输出还是输入,复用功能还是模拟管脚来调用GPIO_Init()函数进行配置。举例说明:

用于普通IO输出时:

1 GPIO_WriteBit(GPIOA, GPIO_Pin_1, 1);//向引脚输出0或1电平,在GPIO_Init前调用
2 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//设置使用引脚
3 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通IO输出
4 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//根据实际应用配置输出结构类型
5 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//根据实际应用配置输出速度
6 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//根据实际应用配置上拉或下拉电阻
7 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA1引脚

        需要注意的是,初始化输出电平时,需要先调用写引脚电平接口,再做初始化操作,这是因为GPIO_WriteBit是将输出的值写入寄存器输出置位/复位寄存器BSRR,BSRR寄存器复位值是0,GPIO_Init相当于将GPIO引脚初始化完打开输出开关。如果需要输出的是高电平,GPIO_WriteBit在前,GPIO_Init在后相当于在没打开开关之前就将1在BSRR中放置好,GPIO_Init将开关一打开就可以输出高电平;如果GPIO_Init在前,GPIO_WriteBit在后,GPIO_Init完会将BSRR中的0先输出,过了一个函数指令周期后调用GPIO_WriteBit才输出高电平,因此若驱动时序对函数指令周期敏感的外围器件时,可能带来驱动时序问题!

用于普通IO输入时:

1 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;//设置使用引脚
2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通IO输入
3 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//根据实际应用配置输出速度
4 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//根据实际应用配置上拉或下拉电阻
5 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA1引脚

用于复用功能时:

        在管脚应用于复用功能时,需要调用GPIO_PinAFConfig()接口来将管脚配置成具体的外设管脚。

1 GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //PA9 复用为 USART1
2 GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //PA10复用为USART1
3 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //设置使用引脚
4 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
5 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //根据实际应用配置输出速度
6 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //根据实际应用配置输出结构类型
7 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //根据实际应用配置上拉或下拉电阻
8 GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9和PA10引脚

用于模拟管脚时:

1 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//PA5 通道 5
2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//模拟输入
3 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;//不带上下拉
4 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化PA5引脚

        当STM32需要进行 AD( 模数 ) 转换采样时,需要把引脚设置为模拟输入模式,模拟输入模式下,不需要连接上拉和下拉电阻,因为GPIO用于模拟功能时,引脚的上、下拉电阻是不起作用的。这个时候即使在配置了上拉或下拉电阻,也不会影响到模拟信号的输入。

(3)、对GPIO引脚进行操作

        在初始化完GPIO引脚的具体配置后,就可以对GPIO引脚进行具体的操作使用了。

用于普通IO输出时:

  可以调用相关GPIO相关写操作接口对引脚进行输出0或者1的操作:GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_ToggleBits。

  也可以调用相关GPIO读接口对输出类型的GPIO进行读取引脚电平的操作GPIO_ReadOutputDataBit。

用于普通IO输入时:

        可以调用相关GPIO读接口对输入类型的GPIO进行读取引脚电平的操作:GPIO_ReadInputDataBit。

用于复用功能时:

        需要根据实际使用时的具体外设配置,接着初始化相应的片上外设后,调用具体的外设信号读或者写接口进行信号的读写操作。

用于模拟管脚时:

        由于模拟管脚功能是用芯片上的ADC对芯片外部的模拟信号进行采样,因此还需要初始化完ADC外设后,调用ADC外设采样的接口进行信号读取。


四、使用技巧

        在日常程序开发调试的过程中,可以简单有效的利用GPIO驱动输出高低电平来进行辅助的测试及验证工作。下面介绍几个较为常用的使用场景,如果有其它可以利用GPIO的方法和技巧,也请大家积极留言,我们一起探讨。

        (1)、在boot程序阶段使用IO翻转输出信号的频率可以和APP程序阶段使用IO翻转输出信号的频率相异,通过使用示波器测量波形,用于区分程序是运行在boot程序阶段还是APP程序阶段,即不同程序阶段。

明解STM32—GPIO应用设计篇之API函数及配置使用技巧

        (2)、在使用定时器中断的时候,为了确保定时器时基设置的正确性,测试是可以定时器中断中增加IO口信号翻转逻辑,通过使用示波器测量翻转的频率来测试验证定时器中断的周期。

1 void TIM1_IRQHandler(void) //定时器 1 中断服务函数
2 {
3     if(TIM_GetITStatus(TIM1,TIM_IT_Update)==SET) //溢出中断
4     {
5         GPIO_ToggleBits(); //IO口信号翻转操作逻辑,用于验证定时器中断频率
6     }
7     TIM_ClearITPendingBit(TIM1,TIM_IT_Update); //清除中断标志位
8 }
明解STM32—GPIO应用设计篇之API函数及配置使用技巧

        (3)、在不同的程序段中使用多个IO,输出高电平,通过示波器测量IO口之间输出高电平的间隔,可以确定两个程序段之间运行的准确时间。

明解STM32—GPIO应用设计篇之API函数及配置使用技巧

 

        (4)、在板卡上没有LED进行闪烁指示的情况或没有使用外部看门狗芯片的情况下,为了确认程序是否仍然在正常运行,需要留出一个IO口,用于翻转高低电平输出,后续就可以用示波器测量该信号的有无来判断程序是否死机。

        (5)、在没有调试打印程序信息的串口时,查找死机问题的时候,放置不同的IO输出高电平的在不同的程序段,这样类似的进行插桩驱动测试,通过示波器测量信号,可以大体的定位在程序运行的哪一块发生了死机的问题。

        (6)、在测试验证阶段,可以将某个IO引脚配置成输入模式,利用外部给的激励信号,在程序中判断读到的信号电平的高低状态,去作为逻辑判断条件进行一些代码段的验证测试。


五、总结

        本篇主要主要是对STM32的GPIO在日常基本应用开发中的具体的操作配置和使用方法进行了说明,包括API功能函数的定义,驱动初始化的配置流程以及一些利用GPIO操作的相关技巧,后续将对GPIO使用成外部中断时进行详细的介绍。


更多技术内容和书籍资料获取,入群技术交流敬请关注“明解嵌入式”

明解STM32—GPIO应用设计篇之API函数及配置使用技巧文章来源地址https://www.toymoban.com/news/detail-426276.html

到了这里,关于明解STM32—GPIO应用设计篇之API函数及配置使用技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 学习2 库函数控制GPIO输出

    GPIO是STM32微控制器上的一组引脚,可配置为输入或输出模式,用于与外部设备进行数字信号交换。每个GPIO引脚都有一个唯一的编号,通常称为引脚名称或引脚号码。 STM32系列微控制器通常具有多个GPIO引脚,数量取决于具体型号。 GPIO模块是STM32微控制器中非常重要的功能之一

    2024年02月21日
    浏览(37)
  • STM32:GPIO_ResetBits函数用法解释

    GPIO_ResetBits函数是用于将指定引脚设置为低状态的函数,可以使用以下步骤进行使用: 首先需要初始化GPIO引脚,这可以通过GPIO_Init函数完成。在调用GPIO_Init函数时,需要传递一个GPIO_InitTypeDef类型的结构体,以配置引脚的模式、速度和上下拉电阻等参数。 在GPIO初始化完成后,

    2024年02月09日
    浏览(41)
  • STM32:GPIO_SetBits函数用法解释

    GPIO_SetBits函数是用于将指定引脚设置为高状态的函数,可以使用以下步骤进行使用: 首先需要初始化GPIO引脚,这可以通过GPIO_Init函数完成。在调用GPIO_Init函数时,需要传递一个GPIO_InitTypeDef类型的结构体,以配置引脚的模式、速度和上下拉电阻等参数。 在GPIO初始化完成后,

    2024年02月08日
    浏览(41)
  • 【明解STM32】一文读懂STM32芯片总线

    目录 一、前言 二、总线基础知识概述 (1)、总线在芯片中的角色 (2)、总线的类型 (3)、总线的指标 (4)、AHB和APB 三、总线框架结构 (1)、结构类型 (2)、总线模块 (3)、总线交互 四、总结         本篇介绍STM32芯片内部的总线系统结构,嵌入式芯片内部的总线和计算机总线类似

    2024年02月07日
    浏览(40)
  • STM32——GPIO配置

    GPIO的输入输出是对于STM32单片机来说的。以下仅为个人粗略笔记,内部电路分析可参考博客https://blog.csdn.net/k666499436/article/details/123845466 1. 输入 上拉输入 下拉输入 浮空输入 模拟输入 2. 输出 复用推挽输出 普通推挽输出 复用开漏输出 普通开漏输出 3. 如何选择GPIO的模式 先判

    2024年02月12日
    浏览(37)
  • [STM32 GPIO配置]

    GPIO初始化结构体: 关于 GPIO_Mode : 在程序函数里是这么写的: ​ 其中,具体的模式及使用说明如下: ​ GPIO_Mode_AIN 为模拟输入模式(Analog Input Mode)。 ​ 在该模式下,GPIO引脚被配置为模拟信号输入。ADC模块可以将引脚读取到的模拟信号转换成数字信号进行处理。这种模式

    2024年02月19日
    浏览(39)
  • 【明解STM32】一文搞明白STM32芯片存储结构

    目录 一、前言 二、内核存储结构 三、芯片存储映射 四、总结         本篇介绍STM32芯片的存储结构,ARM公司负责提供设计内核,而其他外设则为芯片商设计并使用,ARM收取其专利费用而不参与其他经济活动,半导体芯片厂商拿到内核授权后,根据产品需求,添加各类组

    2024年02月16日
    浏览(39)
  • 【STM32】STM32F4 GPIO详解与配置

    GPIO是通用输入输出端口的简称,为STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32芯片的GPIO被分成很多组,每组有16个引脚,所有的GPIO引脚都有基本的输入输出功能。 其中保护二极管使GPIO能够5V电压容忍。在

    2024年02月07日
    浏览(51)
  • STM32:GPIO配置和使用

    目录 一、GPIO简介 1.1 GPIO的输入输出模式 1.1.1 输入模式 1.1.2 输出模式 二、GPIO的使用 2.1 引脚初始化 2.2 引脚使用 注:型号:STM32F407ZET6     GPIO:通用输入输出接口     STM32上有A~H共8组,其中A~G7组每组有0~15号共16个引脚,H组有两个引脚。 1.1.1 输入模式      1. 上拉输入  

    2024年02月08日
    浏览(34)
  • STM32配置GPIO的高低电平

    一、在keil对应的工程文件的对应位置新建gpio.h和gpio.c文件; 二、编辑gpio.c文件; 三、在gpio.h文件中编辑; 四、在主文件main.c文件中运用即可;

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包