1. 操作GPIO的意义
我们在学习单片机的时候,一般都是从操作GPIO开始的,很多单片机学习的教程第一课就是点亮发光二极管或者是流水灯。所以对于初学者而言,及时掌握单片机的GPIO口是一件具有里程碑意义的事情。今天以STM32单片机为例,简单看一下GPIO口。
2. STM32单片机GPIO的配置模式
STM32单片机的GPIO最有8组,分别为A,B,C,D,E,每组有0-15共16个。可以配置为8中模式:
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时钟;
设置为输出或者输入(即设置方向);
开出或者读入;