1.GPIO_Init
这个函数主要是用于GPIO的初始化,GPIOx和GPIO_Pin选中某个引脚,GPIO_Speed决定GPIO的速度,GPIO的工作状态主要由GPIO_Mode决定,其工作状态是初始化的关键。
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(GPIOE, GPIO_Pin_12); // PE12 输出高电平
GPIO_ResetBits(GPIOE, GPIO_Pin_12); // PE12 输出低电平
3 GPIO_PinRemapConfig
说这个之前有必要说一下STM32的端口复用与重映射。
默认复用不需要AFIO,重映射才需要AFIO
复用
STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。
例如串口1的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。
重映射
每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。重映射分为部分重映射和完全重映射。
3 条评论
这是在学习物联网硬件开发吗
不是物联网 是嵌入式开发
对对对,物联网它祖师爷