GPIO简介:
GPIO位结构:
TTL施密特触发器是对输入电压进行整形的,设定上下阈值,高于上限的输出高电平,低于下限的输出低电平,可以有效的避免因信号的抖动而造成输出抖动现象。
位设置寄存器:对某一位置1,在对应的位寄存器位写1即可。剩下不需要操作的位写0。
位清楚寄存器:对某一位置0,在对应的位清楚寄存器写1即可。
通过配置GPIO端口寄存器可以设置以下8种模式:
推挽输出:在推挽输出模式下,PMOS和NMOS均有效,数据寄存器为1时,上管导通,下管断开输出直接接到VDD就是输出高电平;数据寄存器为0时,下管导通,上管断开,输出直接接到VSS就是输出低电平;这种模式下高低电平均有较强的驱动能力,所以推挽输出模式也叫强推输出模式。
开漏模式:P-MOS无效,只有N-MOS在工作,当数据寄存器为1时,下管断开,输出相当于断开,此时是高阻模式,数据寄存器位0时,下管导通,输出直接接到VSS,输出低电平,只有低电平有驱动能力,高电平是没有驱动能力的;在该模式下,可以作为通信协议的驱动模式,比如I2C,在多机通信的情况下,可以避免各个设备的相互干扰;
除了模拟输入模式下,其他模式输入均有效;复用模式即输出由外设控制;
对于功率大一点的直接用IO端口驱动对stm32负担过大,此时可以用三极管驱动电路来完成驱动任务:
上面的是PNP三极管驱动电路,三极管的左边是基极,带箭头的是发射极,剩下的是集电极,左边的基极给低电平三极管就会导通,此时蜂鸣器工作;基极给高电平,三极管截止,无电流通过,蜂鸣器停止工作。
下面的是NPN三极管驱动电路,三极管的左边是基极,带箭头的是发射极,剩下的是集电极,它的驱动逻辑跟上面的是相反的,基极给高电平导通,基极给低电平截止。
注意:PNP三极管最好接在上边,NPN最好接在下边,这是因为三极管的通断是需要发射极和基极之间有一定的开启电压,如果负载接在发射极可能导致三极管无法开启。