1.GPIO_Init

这个函数主要是用于GPIO的初始化,GPIOx和GPIO_Pin选中某个引脚,GPIO_Speed决定GPIO的速度,GPIO的工作状态主要由GPIO_Mode决定,其工作状态是初始化的关键。
函数GPIO_Init

GPIO_Pin 引脚:
GPIO_Pin说明

GPIO_Speed 引脚速率:

  GPIO_Speed_10MHz 最高输出速率10MHz
  GPIO_Speed_2MHz  最高输出速率2MHz
  GPIO_Speed_50MHz 最高输出速率50MHz

GPIO_Mode:
设置选中引脚的工作状态

 GPIO_Mode_AIN = 0x0,//模拟输入
 GPIO_Mode_IN_FLOATING = 0x04,//浮空输入
 GPIO_Mode_IPD = 0x28,//下拉输入
 GPIO_Mode_IPU = 0x48,//上拉输入
 GPIO_Mode_Out_OD = 0x14,//开漏输入
 GPIO_Mode_Out_PP = 0x10,//推挽输入
 GPIO_Mode_AF_OD = 0x1C,//复用开漏输入
 GPIO_Mode_AF_PP = 0x18//复用推挽输入

一、工作模式

工作模式可能有不同的分类,但本质上相差不大。

1 通用功能输入输出(GPIO)

1.输入浮空

2.输入上拉

3.输入下拉

4.开漏输出

5.推挽式输出

2 复用功能输入输出(AFIO)

1.复用输入功能(端口必须配置为输入模式(浮空,上拉,下拉))

2.模拟输入:用于ADC模拟输入

3.推挽式复用输出功能:如I2C的SCL,SDA

4.开漏复用输出功能:如SPI的SCK,MOSI,MISO

5.双向复用功能:输出时必须配置为复用功能输出模式(推挽或开漏),倏然是,输入驱动器被配置为浮空输入模式

3 工作模式的解释与使用

1、模拟输入: 顾名思义,即为输入模拟信号

2、浮空输入:I/O口的状态是不确定的,完全由外部输入决定

3、下拉输入:在没有信号输入的时候默认输入低电平

4、上拉输入:在没有信号输入的时候默认输入高电平

5、开漏输出:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现IO双向功能

6、推挽输出:IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的

7、复 用:理解为GPIO口被用作第二功能时的配置情况

通常有5种方式使用某个引脚功能,它们的配置方式如下:

1)作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。

2)作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。

3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。

4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。

5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

2.GPIO_SetBits,GPIO_ResetBits

GPIO_SetBits   拉高引脚输出电平

GPIO_SetBits(GPIOE, GPIO_Pin_12);    // PE12 输出高电平
GPIO_ResetBits(GPIOE, GPIO_Pin_12);    // PE12 输出低电平

GPIO_ResetBits 拉低引脚输出电平

3 GPIO_PinRemapConfig

说这个之前有必要说一下STM32的端口复用与重映射。
默认复用不需要AFIO,重映射才需要AFIO

复用
STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。

例如串口1的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。

重映射
每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。重映射分为部分重映射和完全重映射。

最后修改:2022 年 06 月 16 日
如果觉得我的文章对你有用,请随意赞赏