下面我就在做个抛砖引玉,依据ST手册上的内容,简略地总述一下GPIO的功用:
一、共有8种形式,能够经过编程挑选:
1. 浮空输入
2. 带上拉输入
3. 带下拉输入
4. 模仿输入
5. 开漏输出——(此形式可完成hotpower说的真双向IO)
6. 推挽输出
7. 复用功用的推挽输出
8. 复用功用的开漏输出
形式7和形式8需依据详细的复用功用决议。
二、专门的寄存器(GPIOx_BSRR和GPIOx_BRR)完成对GPIO口的原子操作,即回避了设置或铲除I/O端口时的“读-修正-写”操作,使得设置或铲除I/O端口的操作不会被中止处理打断而形成误动作。
三、每个GPIO口都能够作为外部中止的输入,便于体系灵敏规划。
四、I/O口的输出形式下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声控制。
五、一切I/O口兼容CMOS和TTL,大都I/O口兼容5V电平。
六、大电流驱动才干:GPIO口在凹凸电平别离为0.4V和VDD-0.4V时,能够供给或吸收8mA电流;如果把输入输出电平别离放宽到1.3V和VDD-1.3V时,能够供给或吸收20mA电流。
七、具有独立的唤醒I/O口。
八、许多I/O口的复用功用能够从头映射,见:你知道吗?STM32上许多管脚功用能够从头映射。
九、GPIO口的装备具有上锁功用,当装备好GPIO口后,能够经过程序锁住装备组合,直到下次芯片复位才干解锁。此功用十分有利于在程序跑飞的情况下维护体系中其他的设备,不会由于某些I/O口的装备被改动而损坏——如一个输进口变成输出口并输出电流。
十、输出形式下输入寄存器仍然有用,在开漏装备形式下完成真实的双向I/O功用。