GPIO的输入工作模式:
8种工作模式
1。输入浮空模式。可以直接读取引脚高低电平的值。
2. 输入上拉模式。只有多了一个30-50k上拉电阻,可以读电压
3. 输入下拉模式。接入一个一拉电阻。 cpu可以读电压
4. 模拟模式,输入0-3.3V,模拟转数字
5。开漏输出模式。可由外部或内部决定引脚电平。
6。开漏复用输出模式。利用复用功能决定。
7.推挽输出,可以输出强高电平,即使端口在初始化时让它为推挽输出就可以输出高电平。可以记忆:把电平往上推,推高---高电平。开漏--漏电了,没了即低电平,强低电平。
8。推挽复用输出模式
STM32GPIO端口配置
每组GPIO端口的寄存器包括:
两个32位配置寄存器(GPIOx_CRL ,GPIOx_CRH) ,
两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),
一个32位置位/ 复位寄存器(GPIOx_BSRR),
一个16位复位寄存器(GPIOx_BRR),
一个32位锁定寄存器(GPIOx_LCKR)。
每个I/O端口位可以自由编程,然而I/O端口寄存器必须按32位字被访问(不允许半字或字节访问) 。
是每组IO口含下面7个寄存器。也就是7个寄存器,
一共可以控制一组GPIO的16个IO口
- GPIOx_CRL :端口配置低寄存器
- GPIOx_CRH:端口配置高寄存器
- GPIOx_IDR:端口输入寄存器
- GPIOx_ODR:端口输出寄存器
- GPIOx_BSRR:端口位设置/清除寄存器
- GPIOx_BRR :端口位清除寄存器
- GPIOx_LCKR:端口配置锁存寄存器
CRH:8——15
端口输入数据寄存器(GPIOx_IDR)读端口电平,一个位得到一个口的端口电平
端口输出数据寄存器(GPIOx_ODR)
设置位为1的话,对应端口高电平 ;设置位为0,则端口低电平。
还可以通过ODR确定是上拉还是下拉,就是给那个端口给高电平还是低电平。0为下拉,1为上拉。
端口位设置/清除寄存器(GPIOx_BSRR)
也是用来配置端口高电平还是低电平。好处:可以直接让某个端口输出为1的电平,其他为0,此时为0的不会影响到先前的电平状态。而ODR设置为0时会使电平为0。高位时相反(一般先ODR读端口,然后通过BSRR改)
端口位设置/清除寄存器(GPIOx_BRR)
和BSRR的高位是一样的。经常用BSRR低16位,再用BRR的低16位,而不用BSRR的高16位。
下面可能是stm32f103ze独有知识
STM32的大部分端口都具有复用功能。
所谓复用,就是一些端口不仅仅可以做为通用IO口,还可以复用为一
些外设引脚,比如PA9,PA10可以复用为STM32的串口1引脚。
作用:最大限度的利用端口资源
PA9、PA10复用为串口。
就是可以把某些功能引脚映射到其他引脚。
比如串口1默认引脚是PA9,PA10可以通过配置重映射映
射到PB6,PB7
作用:方便布线
stm32r的所有IO口都可以作为中断输入