STM32的GPIO(通用输入/输出端口的简称)被分为很多组,与51系列单片机的I/O口类似(51系列单片机是8个引脚一组,共4组,分别是P0、P1、P2和P3)。但STM32是16个引脚一组。由于STM32的型号非常多,引脚数量也不尽相同,因此分组的数量也不同。以开发板使用的STM32F407ZGT6为例,它具有144个引脚,其中包含了114个GPIO,共分为8组,分别是PA,PB,…,PH(PH口只有2个引脚),而且每个GPIO引脚都具有复用的第二功能,有些甚至有第三、第四功能。从引脚数量与功能上看,STM32远远比传统单片机要复杂得多。图2-1是GPIO的结构图(截自STM32官方手册)。
图2-1 GPIO电路结构图(www.xing528.com)
要学会使用STM32的GPIO,必须要掌握它的工作原理。其简要的工作流程:由处理器发出读指令(包括输入类的复用指令),打开输入驱动器开关,同时关闭输出驱动器开关;由处理器发出写指令(包括输出类的复用指令),打开输出驱动器开关,同时关闭输入驱动器开关。
因此,使用GPIO时首先必须设置GPIO的属性,是作为输入使用还是作为输出使用;其次,确定它是否使用复用功能,如输入类的A/D转换、外部中断等,输出类的PWM输出、定时器输出等,还有接口类的UART、SPI、IIC、LCD等接口。而这些功能必须要在GPIO的控制寄存器中进行设置,设置完毕后信号传递的线路会根据控制寄存器的设置进行配置。比如设置了PA0为A/D转换的复用功能,则信号的传递方向沿图2-1所示的模拟信号输入通道方向;如果将PA0设置成普通的输出功能,信号的传递方向沿图2-1所示的数字信号输出通道方向。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。