一、通用输入输出口
可配置为8种输入输出模式。
引脚电平:0V~3.3V,部分引脚可容忍5V输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器模拟通信协议输出时序等。
输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据。
二、GPIO的结构
①寄存器的作用是将单片机内部的数据从APB2中读出或是将内部的数据保存到寄存器中在发送出去。
②当要进行点灯这类的操作时,需要通过驱动器将电流放大,从而增大驱动能力。
③这里的寄存器均为32位,但是为什么GPIOA只有16个IO口,这是因为寄存器中一般只有低16位有效。
④这里红框起的部分作用是起到保护电路,VDD为3.3v,vss为负电压或0v,当有高电压进入时电流会流入①号通路,当有负电压进入时,电流会从②号通路流出,从而达到保护电路的作用。
⑤正常情况下的输入一般有三种:浮空,弱上拉和弱下拉。通常①、②号的开关都未闭合此时为浮空输入的状态,①号闭合、②号断开为弱上拉,反之则为弱下拉的状态。
⑥肖特基触发器的作用是相当于滤波,当电压高于特定阈值时,使其输出为高电平,电压低于特定阈值时为低电平。
⑦此外还有模拟输入,一般用于ADC的采集通道。复用功能的输入则用于某些外设的功能。
⑧输出的情况有推挽、开漏、关闭三种。推挽输出则是P-Mos和N-Mos均有效,当从输出数据寄存器数据是0时则N-Mos输出低电平,反之输出1时为高电平,开漏的情况则是高电平会进入高阻态的情况,意味着P-Mos处于无效的状态。这时只能输出低电平,一般用于某些通信协议。关闭的情况先不管。
⑨最后讲一下输出寄存器和位设置\清除寄存器的作用,输出数据寄存器一共16位,如果想对某位进行清楚或者设置必须对整体进行操作,这就类似于51单片机的P0=0XFF,但位设置\清楚寄存器的作用则可以帮助输出数据寄存器实现某位的改写,类似于P1_0=1;这带来的极大的便利,我们库函数开发就是基于第二种进行的。