单片机GPIO口的操作方式,以STM32为例

1. 操作GPIO的意义

我们在学习单片机的时候,一般都是从操作GPIO开始的,很多单片机学习的教程第一课就是点亮发光二极管或者是流水灯。所以对于初学者而言,及时掌握单片机的GPIO口是一件具有里程碑意义的事情。今天以STM32单片机为例,简单看一下GPIO口。

2. STM32单片机GPIO的配置模式

STM32单片机的GPIO最有8组,分别为A,B,C,D,E,每组有0-15共16个。可以配置为8中模式:

配置模式

模式 Mode
模拟输入模式 GPIO_Mode_AIN
浮空输入模式 GPIO_Mode_IN_FLOATING
下拉输入模式 GPIO_Mode_IPD
上拉输入模式 GPIO_Mode_IPU
通用开漏输出模式 GPIO_Mode_Out_OD
通用推挽输出模式 GPIO_Mode_Out_PP
复用开漏输出模式 GPIO_Mode_AF_OD
复用推挽输出模式 GPIO_Mode_AF_PP

3. 相关寄存器

配置GPIO相关的寄存器有如下几个:
1.端口配置低寄存器:(GPIOx_CRL) (x=A..E)
2.端口配置高寄存器:(GPIOx_CRH) (x=A..E)
3.端口输入数据寄存器:(GPIOx_IDR) (x=A..E)
4.端口输出数据寄存器:(GPIOx_ODR) (x=A..E)
其余未完全列出... ...

GPIOx_CRL用来配置0-7脚的输入输出模式,GPIOx_CRH用来配置8-15脚的输入输出模式。

GPIOx_IDR是GPIO的输入寄存器,即用来检测GPIO当前的状态。其读取方式如下(以PA1为例):
GPIOA->DIR&(1<<1)

GPIOx_ODR是GPIO的输出寄存器,即用来置位或者清零GPIO。其操作方式如下(以PA1为例):
PA1 = 1:GPIOA->OIR |= (1<<1) ;
PA1 = 0:GPIOA->OIR &=~(1<<1) ;

4. GPIO口的操作步骤

任何事情都是有套路的,操作GPIO也是一样:
打开GPIO时钟;
设置为输出或者输入(即设置方向);
开出或者读入;

(0)

相关推荐