GPIO的整体构造图
1,在STM32中,所有GPIO都是挂在APB2这个总线上面的;
2,每个GPIO外设,总共有16个引脚,编号是从0-15;
3,在每个GPIO模块中,主要包括了寄存器和驱动器,寄存器就是一段特殊的寄存器,
内核可以通过APB2总线对寄存器进行读和写,驱动器是用来增加信号的驱动能力;
4,其中输出寄存器写1,对应的引脚就会输出高电平,写0,则输出低电平;
5,输入寄存器读写为1,则对应端口的电平为高电平,读取为0,则表示低电平;
6,GPIO的寄存器是16位的,高16位没有用到;
GPIO端口位基本结构(中文手册106页)
肖特基触发器:施密特触发器是对输入电压进行整形
位设置清除寄存器:可以单独控制输出端口的某一位,不影响其他位
输出数据寄存器:需要用&=或者!=的方式更改其中的某一位
片上外设:相当于51中的按位寻址
推挽模式:P-MOS和N-MOS都有效,数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,也就是输出高电平;
数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,也就是输出低电平;这种模式高低电平都有较强的驱动能力,
所以推挽模式也可以叫做强推输出模式,在这种模式下,stm32对IO口有绝对的控制权,高低电平都由STM32说了算。
开漏模式:P-MOS无效,只有N-MOS有效,数据寄存器为1时,下管断开,这时输出相当于断开,也就是高阻模式;数据寄存器为0时,下管导通,输出直接接到VSS,也就是输出为低电平,这种模式下也只有低电平有驱动能力,高电平时没有驱动能力的;
关闭模式:当引脚用于输入模式的时候,这两个MOS管都无效,也就是输出关闭,端口的电平由外部来控制;
GPIO的八种工作模式
(1) GPIO_Mode_AIN 模拟输入
(2) GPIO_Mode_IN_FLOATING 浮空输入
(3) GPIO_Mode_IPD 下拉输入
(4) GPIO_Mode_IPU 上拉输入
(5) GPIO_Mode_Out_OD 开漏输出
(6) GPIO_Mode_Out_PP 推挽输出
(7) GPIO_Mode_AF_OD 复用开漏输出
如下是点动小灯