对于大容量的144引脚的32芯片,一共有七组IO,分别定义为GPIOA到GPOIG。每组IO有十六位,定义为PA0-PA15,PB0-PB15…
GPIO的八种工作模式:
1.输入浮空
此时上拉与下拉电阻断路,IO口读入真实电平状态。
2.输入上拉
跟上图的唯一区别就是读入的电平状态是接入上拉电阻以后的电平状态,不是直接读IO电平
3.输入下拉
跟上图的唯一区别就是读入的电平状态是接入下拉电阻以后的电平状态,不是直接读IO电平
4.模拟输入
该种方式相当与A/D转换,把IO口输入的电压值转换为数字量。
5.开漏输出
学过模电跟数电的话,看这个名字应该会比较有感触,这个模式实际上是电流驱动模式,能够容忍较大的电流通过。
值得注意的是:当写端写入1时,输出控制电路输出1,此时N-MOS管关闭,IO口读出的电平是由外部上拉或下拉电阻决定的,不一定是1。但是当输出控制电路输出0时,N-MOS管导通,被拉到VSS,此时IO输出电平一定为低。
6.开漏复用输出
这个模式跟上面的开漏输出的区别就是该模式的输出电平来自复用端,其余一样
7.推挽输出
这个模式可以理解为是开漏输出不介入外部上拉或者下拉电阻。
输出控制电路输出高,则IO输出高,输出控制电路输出低,则IO输出低。
8.推挽复用输出
跟上面的一样,只是此时是复用功能输出
小结:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
GPIO相关寄存器
1.CRL寄存器
首先,CRL寄存器是32位的,四位为一组控制一个IO口,一共能控制8个IO口(编号0-7,8-15由CRH控制)。四位里又分为两组:MODE和CNF。MODE配置输入/输出及其速度。CNF配置选择八种模式中的一种。
2.CRH寄存器。见上!!!
3.IDR寄存器
4.ODR寄存器
这个寄存器跟CRL,CRH寄存器的上下拉输入模式选择相关:
5.BSRR寄存器
这个寄存器的作用就像是RS flip-flop。低十六位控制set(高有效,低保持)。高16位控制reset(高有效,低保持)。跟ODR寄存器作用很相似,但是ODR寄存器的单独一位就可以实现set,跟reset某个IO口的功能。BSRR寄存器通常只使用低十六位,用于在设置ODR寄存器后修改某些IO口的输出电平。其高十六位的功能通常用BRR寄存器代替。
6.BRR寄存器
该寄存器只有清零的作用,没有置一的作用。
该寄存器只有十六位,图中高16位不用管