STM32F103的GPIO的工作方式以及相关寄存器配置

一、GPIO工作方式

1.输入浮空模式:CPU 可以读取到外部的高低电平,输入的高低是不确定的完全由外部输入决定。例如按键可以使用这个模式。

2.输入上拉模式:就是在无信号状态默认是高电平,当我们输入的低电平是有效控制信号就使用此模式。

3.输入下拉模式:就是在无信号状态默认是低电平,当我们输入的高电平是有效控制信号就使用此模式。

4.输入模拟模式:输入的是模拟量,将其传送给片上外设,用于A/D转换,可以采集外部电压具体值。

5.开漏输出模式:当输出为1时N-MOS是截止的,所以高电平就由外部的上拉电阻来决定,也就是由外部电源来决定。当输出为0时N-MOS是导通的,输出的也就是低电平。此模式的好处就在于可以多个信号线连接在一起,只有总线上的所有信号都为高电平时,总线才为高电平,只要有一个为低电平,总线就为低电平。

6.开漏复用输出模式:与开漏输出模式原理相同,只是开漏输出模式的输出是由cpu写寄存器得来的,而开漏复用输出模式的输出是由片上外设决定的。

7.推挽输出模式:CPU输出为1时P-MOS导通,N-MOS截止,输出结果为1;CPU输出为0时P-MOS截止,N-MOS导通,输出结果为0;也就是说输出的高低电平都由内部电源决定和外部无关。

8.复用推挽输出模式:和推挽输出模式工作模式相同,只是复用推挽输出模式的输出是由片上外设决定的。

二、GPIO相关配置寄存器

1.两个32位配置寄存器GPIOx_CRL、GPIOx_CRH;

(1)GPIOx_CRL寄存器(x=A~E)

STM32F103的GPIO的工作方式以及相关寄存器配置

 

这是低32位代表0-7的引脚,其中上拉还是下拉由ODR寄存器决定。

STM32F103的GPIO的工作方式以及相关寄存器配置

列如对PA0 配置为通用推挽输出,输出的速度为 10M,

GPIOA_CRL &= ~( 0x0F<< (4*0));清空低4位被置零其他位不变

 

GPIOA_CRL |= (1<<4*0);低四位设置为00 01

(2)GPIOx_CRH寄存器

   与GPIOx_CRL相同,只是代表着8-15的引脚。

2.两个32位配置寄存器GPIOx_IDR、GPIOx_ODR;

(1)GPIOx_ODR端口输出寄存器

STM32F103的GPIO的工作方式以及相关寄存器配置

0-15代表引脚,控制高低电平

GPIOA_ODR &= ~(1<<0);//将PA0引脚置1

特殊的是,在输入模式下,对应的引脚为1是上拉模式,0为下拉模式。

(2)GPIOx_IDR端口输入寄存器

与上面相同,只是用来从中读取相应引脚的高低电平。

3.一个32位置位/复位寄存器GPIOx_BSRR

STM32F103的GPIO的工作方式以及相关寄存器配置

低16位设置对应的引脚为1,则ODR寄存器对应位为1;设置为0,则不产生影响。

高16位设置对应的引脚为1,则ODR寄存器对应位为0;设置为0,则不产生影响。

4.一个32位锁定寄存器GPIOx_LCKR

    这个一般用的比较少。