STM32学习笔记——STM32中GBIO相关配置寄存器设置

GPIO基础知识

STM32F103ZET6一共有七组IO口,
每组IO口有16个IO
GPIO的七组编号由GPIOA,GPIOB…到GPIOG
GPIOA里面由PA0到PA15共16个IO口

4种输入模式

1.输入浮空
输入浮空模式下输入值是一个不确定值,介于0V到VCC之间,
输入引脚即不接高电平,也不接低电平,用于标准的通讯协议,比如IIC、USART的等,如果想用做按键检测等功能,需外部使用上拉或下拉电阻;
2.输入上拉
比输入浮空模式多加了个输入上拉电路,用于将低电压直接上拉成高电压,只能输入高低电压,即1/0
3.输入下拉
比输入浮空模式多加了个输入下拉电路,用于将低电压直接上拉成零电压,只能输入高低电压,即1/0
4.模拟输入
上拉下拉皆无效,接受啥信号就输入啥信号,不经过任何处理。输入为任意值。

4种输出模式

1.开漏输出
输出通过位设置/清除寄存器来设置的

2.开漏复用输出

3.推挽式输出

4.推挽式复用功能

3种最大输出速度

2MHZ
10MHZ
50MHZ

每组IO口含有七个寄存器,一共可以控制一组GPIO的16个IO口

1:GPIOx_CRL:端口配置低寄存器
2:GPIOx_CRH:端口配置高寄存器
控制IO口的输入输出模式和频率
32位寄存器,四个位控制一个IO口,一共控制8个IO口,高低两个寄存去共同控制一组IO16个IO口
CRL控制低八位(0-7)的IO口,
CRH控制高八位(8-15)的IO口。

四个位中高两位控制输入输出模式:
在输入模式时(MODE[1:0]=00):
00:模拟输入模式
01:浮空输入模式(复位后的状态)
10:上拉/下拉输入模式
11:保留
在输出模式时(MODE[1:0]>00):
00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式
四个位中低两位用来配置相应IO口的是输入还是输出模式,如果是输出模式并配置相应的输出速度。
00:输入模式(复位后的状态)
01:输出模式:最大速度10MHZ
10:输出模式:最大速度2MHZ
11:输出模式:最大速度50MHZ

3:GPIOx_IDR:端口输入寄存器
一组IO口的输入由端口输入寄存去来决定,IDR一共32位,高16位保留,低16位分别控制相应的IO口,对应的时IO口的输入电平。

4:GPIOx_ODR:端口输出寄存器
与输入寄存器相反,来控制输出的。
在CRL寄存器配置为上拉下拉模式即高两位为10时,ODR相应的位寄存器配置1为上拉,0为下拉
通用输出模式下即CRL高两位为00或者01时,ODR寄存器的1/0表示为电平的高低

5:GPIOx_BSRR:端口设置/清除寄存器
低16位对应位设置为1,则对应IO口输出为高电平,设置为0则对IO口不产生影响,可理解为只有设置1他才往端口的输出写入1,为0则不写入。
高16位则相反,设置为1则将ODR寄存器相应的值置零,为0则不影响。

6:GPOIx_BRR:端口位清除寄存器
作用和BSRR的高16位是一样的

7:GPIOx_LCKR:端口配置锁存寄存器

你可能感兴趣的:(STM32,stm32,gpio)