因为是学习标准库,所以就不再研究GPIO的结构等问题了
主要学习几个重要的函数,复用和重映射。
1.GPIO_Init
这个函数主要是用于GPIO的初始化,GPIOx和GPIO_Pin选中某个引脚,GPIO_Speed决定GPIO的速度,GPIO的工作状态主要由GPIO_Mode决定,其工作状态是初始化的关键。
GPIO_Pin
GPIO_Speed
GPIO_Mode
一工作模式
工作模式可能有不同的分类,但本质上相差不大。
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
设为高电平
设为低电平
3 GPIO_PinRemapConfig
说这个之前有必要说一下STM32的端口复用与重映射。
默认复用不需要AFIO,重映射才需要AFIO
复用
STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。
例如串口1的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。
重映射
每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。重映射分为部分重映射和完全重映射。
步骤
手写的,字有点丑。。
先说复用的步骤
(1) 先使能相应的时钟
(2) 对相应的GPIO初始化,具体怎么初始化呢,
Default这一栏是外设,对应的左边就是复用的引脚,从表(stm32zet6.pdf)中确定对应的引脚,查引脚还有一个好办法就是通过Stm32cubemx查找,这个也很方便
然后工作模式从另一个文档(stm32中文参考手册8.1.11)中查找
(3)对外设进行初始化
再说重映射的步骤
(1)使能GPIO,外设,AFIO相应时钟
(2)GPIO初始化,这个的初始化与复用的不太一样,先查找并确定重映射的类型及所对应的引脚
然后再从从另一个文档(stm32中文参考手册8.1.11)中查找工作模式
(3)使能重映像
到这里才用到上面要讲的函数
根据(2)中的映射方式,选择映射模式
再进行使能
(4)使能相应外设
GPIO_EXTILineConfig
这个具体到外部中断说。
本文用到的文件提取码:o4o9