我们认识单片机往往最先接触就是I/O 端口,因为I/O口是非常直观的,在我们拿到一块芯片时就可以看到它有很多引脚,这就是I/O口。它是内部功能当中非常重要的一个环节,它是与外设连接的桥梁。因为I/O 端口也可以代替除ADC 之外所有的逻辑电平的通信接口。很早以前的单片机没有那么多通信接口,靠的是I/O 端口来模拟的,由此可见I/O 端口的全能。I/O 端口最原本的功能就是电平的输入(IN)和输出(OUT),所以才用I 和O 两个首字母作为它的名字。在写法上,正确的是I/O,也有写成IO 的,在STM32 中一般写成GPIO,都是可以的。
STM32F103 最多有80 个I/O 端口,这些端口每16 个被分成一组,一共有5 组。组的名字分别是PA、PB、PC、PD 和PE,每组中16 个端口的名字可以是PA0 到PA15,其他组也一样。但由于封装引脚数量不同,端口的数量也不同。STM32F103C8T6 这款单片机的48 个引脚当中有37 个可作I/O 端口。其中PA 和PB 的16 个端口都引出了,PC组只引出3个,PD组只引出2个。
每一个I/O 端口都有8 种工作模式,也就是I/O 端口的状态是输出还是输入?是输入的话,是模拟量输入还是逻辑电平输入?我们需要在启动I/O 端口之前先把它设置成正确的状态。GPIO的8 个工作模式,模拟输入是在作ADC 输入接口时使用的,