一、通过编程读写相关寄存器,实现对GPIO引脚的控制。
二、GPIO常用寄存器
实现输入配置或输出配置,实现输出高电平还是低电平,以及管脚是否复用。
三、电路
电路分为两部分,上半部为输入,下半部分为输出
输入分为四种:模拟输入、上拉输入、下拉输入、浮空输入。
TTL施密特触发器将外部输入的模拟信号转换成数字信号
上拉模式下寄存器直接读取IO端口电平,IO端口是高电平读取的就是高电平,IO端口是低电平读取的就是低电平,
IO端口输入 | 寄存器读取 |
1 | 1 |
0 | 0 |
悬空 | 1 |
下拉模式下寄存器直接读取IO端口电平,IO端口是高电平读取的是高电平,IO端口是低电平读取的就是低电平
IO端口输入 | 寄存器读取 |
1 | 1 |
0 | 0 |
悬空 | 0 |
浮空模式下寄存器直接读取IO端口电平,IO端口是高电平读取的是高电平,IO端口是低电平读取的就是低电平,悬空读取不确定。
三种模式区别
输出模式
通过编程直接控制寄存器的数值:0或1
复用功能输出:控制源来自片上外设,如串口等。
输出控制是通过二选一选择器(输出控制左边)进行控制
输出有四种:推挽输出、开漏输出、推挽复用输出、开漏复用输出
推挽输出(两个mos管)
同一时间两个mos管只能有一个进行工作
输出高电平原理
输出低电平 N-MOS管导通,IO引脚被拉低
采用推挽输出时,驱动能力与芯片的IO的电流特性有关
开漏输出(一个mos管)
没有外部上拉电阻时,N-MOS管导通,IO引脚电平被拉低
当N-MOS管截止,它的电阻可以看作无穷大,输出端口时高阻态
采用开漏输出模式,要想输出高电平,需要通过外部上拉电阻提供驱动,一般工作在电平不匹配的场合。
推挽复用输出和推挽输出类似,只是推挽复用输出,控制源来自片上外设,如PWM、串口等。
开漏复用输出和开漏输出类似,只是开漏复用输出,控制源来自片上外设,如I2C等。
单片机中,输出一般常用推挽输出。