1.GPIO是什么
可以做输入输出的端口,GPIO端口通过程序可以配置输入输出模式和复用的功能。
2.在芯片中如何分布
1.一共有九组IO口,PA-PI
2.其中PA-PH,每组16个
3.PI只有PI0-PI11
4.STM32中176多个引脚,140个可以作为IO口。
3.STM32的IO口的复用
1.复用意思
就是原本一个IO口就只能执行一种功能,例如只能作为串口,定时器等其中一种功能,无法改变了。
但是加入了复用,就是可以通过配置寄存器可以根据需求配置IO口的功能,就是IO口的功能可以有多种选择,极大的减少了IO口的使用。
(每个IO口通常有很多可以选择的功能,但是每个IO口可以选择的功能种类不同,需要看芯片引脚功图,需要注意的是IO口是复用,不是一个IO口同时有多个功能,只是多个功能选择一个使用)
2.原理图
4.STM32的IO口8种工作模式
几乎所有32芯片都是8种工作模式(工作模式不是功能,不同的功能与情况需要不同的工作模式)
1.输入浮空
右边IO引脚电流进来,上拉下拉没有设置,TTL触发器是打开的,就到了输入数据寄存器,cpu就可以从输入数据寄存器提取数据
2.输入上拉
右边IO引脚电流进来,经过上拉(VDD起作用),TTL触发器是打开的,就到了输入数据寄存器,就可以从输入数据寄存器提取数据
3.输入下拉
右边IO引脚电流进来,经过下拉(VSS起作用),TTL触发器是打开的,就到了输入数据寄存器,就可以从输入数据寄存器提取数据
4.模拟模式
右边IO引脚电流进来,上拉下拉没有设置,TTL触发器是关闭的,电压信号直接到模拟口。
5.开漏输出模式
cpu会在位设置/清除寄存器写位数据,然后到输出数据寄存器,或者直接在输出输出数据寄存器写入数据。
cpu输入1的时候,n-mos管为截止,输出0,需要接上下拉才能变成1。对IO口电平没有影响。
cpu输入0的时候,n-mos管为导通,输出0,IO口输出0。
5.开漏复用模式
和开漏输出模式一样,只是从复用功能输出信号。
需要注意的是,我们前面两种模式都可以从输入数据寄存器可以直接读取IO口数据。
5.推挽输出模式
p-mos和n-mos都在工作
cpu写1的时候,p-mos管工作,n-mos管截止,输出高电平,IO口为高电平。
cpu写0的时候,p-mos管截止,n-mos管工作,输出低电平,IO口为低电平。
5.推挽复用输出模式
和推挽输出模式相似,只是从外设输入信号。
6.上电后IO口状态
GPIO默认为输入浮空状态,部分IO口特殊状态。
GPIO寄存器
每一组IO口都包含10个寄存器。
4个32位配置寄存器
2个32位数据寄存器
1个32位置位寄存器/复位寄存器
1个32位锁寄存器
2个32位复用功能寄存器
1.端口模式寄存器
每两位确定一个端口,设置模式,(不管上下拉)
如果要设置PA1为模拟模式,就把3和2数据位为1。
2.端口输出类型寄存器
高16位不使用
设置推挽或开漏模式
3.端口输出速度寄存器
一样的配置意思
4.上下拉寄存器
无上下拉就是浮空输入
5.端口输入寄存器
输入的电平为1还是0,就写入这个地方
6.端口输出寄存器
输出的电平为1还是0,就写入这个地方
7.端口置位/复位寄存器
和端口输出寄存器相似,控制输出信号
低16位为置位
高16位为复位
置位写入1有效
复位写入0有效
8.端口端口配置锁定寄存器
使用低17位
低17位为是否激活锁定
低16位为是否锁定端口
9.复用功能寄存器
4个为控制一个IO口,这一组有两个16位寄存器。
控制16个IO口
输入不同的值就可以现在不同序号的功能