全球旧事资料 分类
一、GPIO口的配置STM32的DGPIO口最多可以有7组(GPIOaGPIOg)而每一组GPIO口均有16个双向IO组成。并且没个IO口均可配置成8种模式(4种输入模式,4种输出模式)。不管配置哪个IO口也不论将其配置成哪种模式(但是配置成哪种模式要看具体应用,参考《中文参考手册》第105页)都可以按以下步骤来进行配置:(1)使能PORTx(xAG)时钟这里就得操作寄存器RCC_APB2ENR(32为寄存器)了
15ADC3EN
7IOPFEN
14USART1EN
6IOPEEN
13TIM8EN
5IOPDEN
12SPI1EN
4IOPCEN
11TIM1EN
3IOPBEN
10ADC2EN
2IOPAEN
9ADC1EN
1保留
8IOPGEN
0AFIOEN
RCC_APB2ENR的015位(0632位保留)
第28分别是使能GPIOAGPIOG时钟的,只要将其置“1”即可,如
RCC_APB2ENR12就是使能GPIOA的时钟;其余IO口的始终使能一次类推。
(2)对相应的IO模式进行配置,低8位配置GPIOx_CRL高8位配置GPIOx_CRH
31
30
29
28
27
26
25
24
CNF710
MODE710
CNF610
MODE610
23
22
21
20
19
18
17
16
CNF510
MODE510
CNF410
MODE410
15
14
13
12
11
10
9
8
CNF310
MODE310
CNF210
MODE210
7
6
5
4
3
2
1
0
CNF110
MODE110
CNF010
MODE010
GPIOx_CRLxAG(端口配置低寄存器xA…E
该寄存器用于配置GPIOx的低8位,具体8种模式的配置见《中文参考手册》例如:
GPIODCRL0XFFFFF0FF;GPIODCRL0X00000300;PD2推挽输出;其余IO口的
低8位以此类推。
31
30
29
28
27
26
25
24
CNF1510
MODE1510
CNF1410
MODE1410
23
22
21
20
19
18
17
16
CNF1310
MODE1310
CNF1210
MODE1210
15
14
13
12
11
10
9
8
CNF1110
MODE1110
CNF1010
MODE1010
7
6
5
4
3
2
1
0
CNF910
MODE910
CNF810
MODE810
GPIOx_CRH端口配置高寄存器xA…E该寄存器用于配置GPIOx的高8位,具体8种模式的配置见《中文参考手册》例如:GPIOACRH0XFFFFFFF0;GPIOACRH0X00000003;PA8推挽输出;其余IO口的高8位以此类推。
f(3)端口的输入和输出电平配置
15
14
13
IDR15IDR14IDR13
7
6
5
IDR7
IDR6
IDR5
12IDR12
4IDR4
11IDR11
3IDR3
10IDR10
2IDR2
9IDR9
1IDR1
8IDR8
0IDR0
GPIOx_IDR(端口输入数据寄存器xA…E)
该寄存器配置IO口的015位的输入数据,以16位读出。
15
14
13
12
11
10
9
ODR15ODR14ODR13ODR12ODR11ODR10ODR9
7
6
5
4
3
2
1
ODR7
ODR6
ODR5
ODR4
ODR3
ODR2
ODR1
8ODR80ODR0
GPIOx_ODR(端口输出数据寄存器xA…E)该寄存器配置IO口的015位的输入初始状态,例如:GPIOAODR113;PA13上拉输入
一般GPIO口配置可仿以下两个程序:
voidKEY_I
itvoid
RCCAPB2ENR12
使能PORTA时钟
GPIOACRL0XFFFFFFF0PA0设置成输入
GPIOACRL0X00000008
GPIOACRHr
好听全球资料 返回顶部