STM32-GPIO详解

   日期:2021-03-20     浏览:110    评论:0    
核心提示:STM32-GPIO配置介绍typedef struct { uint32_t GPIO_Pin; GPIOMode_TypeDef GPIO_Mode; GPIOSpeed_TypeDef GPIO_Speed; GPIOOType_TypeDef GPIO_OType; GPIOPuPd_TypeDef GPIO_PuPd; }GPIO_InitTypeDef;结构体成员解释GPIO_Pin :直观点说就是针对每个IO口的,对这个成员的配置相当于一

STM32-GPIO配置介绍

typedef struct 
{ 
 	uint32_t GPIO_Pin;
    GPIOMode_TypeDef GPIO_Mode; 
    GPIOSpeed_TypeDef GPIO_Speed; 
    GPIOOType_TypeDef GPIO_OType; 
    GPIOPuPd_TypeDef GPIO_PuPd; 
}GPIO_InitTypeDef;

下面将对每个结构体成员解释如何配置

GPIO_Pin :

直观点说就是针对每个IO口的,对这个成员的配置相当于一个对IO口的定位

GPIO_Mode :

 typedef enum
{  
  GPIO_Mode_IN   = 0x00, 
  GPIO_Mode_OUT  = 0x01, 
  GPIO_Mode_AF   = 0x02, 
  GPIO_Mode_AN   = 0x03  
}GPIOMode_TypeDef;

IN模式常用在按键输入
OUT模式常用在跑马灯,蜂鸣器
AF就是复用成其他的外设不再作为一个普通的仅作输入输出的IO口使用
AN模式就是针对复用为ADC,DAC时使用

GPIO_Speed :

当STM32的GPIO端口设置为输出模式时,有多种速度可以选择,这个速度是指I/O口驱动电路的速度,是用来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当你不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。
当然如果你要输出较高频率的信号,但却选用了较低频率的驱动模块,你很可能会得到失真的输出信号。实际上芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路。

我们配置这个结构体成员的关键是根据实际应用来选择的,举个例子
对于串口,假如最大波特率只需115200,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。
对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。

GPIO_OType :

typedef enum
{  
  GPIO_OType_PP = 0x00,
  GPIO_OType_OD = 0x01
}GPIOOType_TypeDef;

推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。

开漏输出一般应用在I2C、SMBUS通讯等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出5伏的高电平,就可以在外部接一个上拉电阻,上拉电源为5伏,并且把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5伏的电平。

简单的来说,推挽输出用于控制,开漏输出用于大电流驱动。

GPIO_PuPd :

typedef enum
{  
  GPIO_PuPd_NOPULL = 0x00,
  GPIO_PuPd_UP     = 0x01,
  GPIO_PuPd_DOWN   = 0x02
}GPIOPuPd_TypeDef;

如果是output,那个一般选择no pull,这样,引脚才能根据你的output数据,进行正确输出。

如果是input,那么需要看具体应用的默认输入值是0还是1. 如果默认是输入0,则最好配置为pull down,反之则配置为pull up. 这样做,主要是为了外部电路在没有上下拉的情况下,出现不确定情况。有许多硬件工程师设计电路时,会在GPIO口的外部设计上下拉电阻,这和内部配置pull up/down是一个目的,且效果相同。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服