GPIO的工作原理
GPIO基本结构和工作方式
GPIO寄存器说明
GPIO引脚说明
一、GPIO介绍
GPIO:就是一个引脚作为输入或者输出。
GPIO的八种工作模式:输入输出是相对于CPU,四种输入、四种输出模式及四种输出最大速度
输入:外部数据输入到开发板
输出:开发板的数据输出到外部设备
1.3 STM32引脚说明
-
STM32F10ZET6:
– 一共有7组IO口
– 每组IO口有16个IO
– 一共16*7=112个IO
GPIOA,GPIOB-----GPIOG
战舰/精英版板子都是144脚芯片,有7组IO而mini板子是64脚的RCT6
-
STM32F103RCT6
– 一共有4组IO口
– 一共16*3+3=51个IO
GPIOA0—A15
GPIOB0—B15
GPIOC0—C15
GPIOD0—D2
STM32的大部分引脚除了当GPIO外,还可以复用为外设功能引脚(串口)
1.1 GPIO基本结构
FT的意思是IO口可以容忍5V电压(STM32的大部分IO口可以容忍5V)
1.2 GPIO工作方式
GPIO支持
4种输入模式
浮空输入
上拉输入
下拉输入
模拟输入
4种输出模式
开漏输出
开漏复用输出
推挽输出
推挽复用输出
GPIO还支持三种最大翻转速度(2MHz、10MHz、50MHz)
浮空输入
浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。
上拉输入
上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在高电平;并且在I/O端口输入为低电平的时候,输入端的电平也还是低电平。
下拉输入
下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在低电平;并且在I/O端口输入为高电平的时候,输入端的电平也还是高电平。
模拟输入
模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块
开漏输出
开漏输出模式下,通过设置位设置/清除寄存器或者输出数据寄存器的值,途经N-MOS管,最终输出到I/O端口。**这里要注意N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。**同时,I/O端口的电平也可以通过输入电路进行读取;
开漏复用输出
开漏复用输出模式,与开漏输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。
推挽输出
推挽输出模式下,通过设置位设置/清除寄存器或者输出数据寄存器的值,途经P-MOS管和N-MOS管,最终输出到I/O端口。**这里要注意P-MOS管和N-MOS管,当设置输出的值为高电平的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口的电平就由P-MOS管决定:高电平;当设置输出的值为低电平的时候,P-MOS管处于关闭状态,N-MOS管处于开启状态,此时I/O端口的电平就由N-MOS管决定:低电平。**同时,I/O端口的电平也可以通过输入电路进行读取;注意,此时I/O端口的电平一定是输出的电平。
推挽复用输出
推挽复用输出模式,与推挽输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的。
1.3 附:M3和M4的IO口的基本结构及区别:上下拉电阻的所在位置的区别
2.1 GPIO中的寄存器说明
一个端口模式寄存器(GPIOx_MODER)
一个端口输出类型寄存器(GPIOx_OTYPER)
一个端口输出速度寄存器(GPIOx_OSPEEDR)
一个端口上拉下拉寄存器(GPIOx_PUPDR)
一个端口输入数据寄存器(GPIOx_IDR)
一个端口输出数据寄存器(GPIOx_ODR)
一个端口置位/复位寄存器(GPIOx_BSRR)
一个端口配置锁存寄存器(GPIOx_LCKR)
两个复用功能寄存器(低位GPIOx_AFRL& GPIOx_AFRH)
2.2具体配置
1. 端口模式寄存器(GPIOx_MODER)
该寄存器有32位,每2位控制一个IO口
2.端口输出类型寄存器(GPIOx_OTYPER)
只用到低16位,1位控制一个IO
3.端口输出速度寄存器 (GPIOx_OSPEEDR)
同理,也是两位配置一个IO