关于STM32的GPIO的初始化:
初始化:
时钟;输出/输入功能、上拉、速度等等;设置复用功能等等
回顾GPIO和IO:
GPIO: 通用IO口。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。
和IO的区别:GPIO 的意思是通用输入输出端口,可由编程决定其状态,MCU 的 I/O 就是 GPIO,也称双向输入输出端口,而** I/O 则泛指所有类型的输入输出端口,包括单向的端口如逻辑门电路的输入输出管脚和双向的 GPIO 端口**,而 GPIO 则必然是双向的,这是为了避免不同语境下易造成混淆而采取的特称。
GPIO 只有 GPIO1_IO00~GPIO1_IO09?不是,还有IO的复用。
I.MX6U IO 复用
-
如(1):寄存器 IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00。
GPIO1_IO00 一共可以复用为 9种功能 IO,分别对应 ALT0~ALT8,其中 ALT5 就是作为 GPIO1_IO00。GPIO1_IO00 还可以作为 I2C2_SCL、GPT1_CAPTURE1、NATOP_OTG1_ID 等。这个就是 I.MX6U 的 IO 复用。 -
如(2):寄存器 IOMUXC_SW_MUX_CTL_PAD_UART1_TX_DATA SW MUX Control Register
UART1_TX_DATA 可以复用为 8 种不同功能的 IO,分为
ALT0~ALT5 和 ALT8、ATL9,其中 ALT5 表示 UART1_TX_DATA 可以复用为 GPIO1_IO16。
IO配置:
IOMUXC_SW_MUX_CTL_PAD_XX_XX :复用IOMUXC_SW_PAD_CTL_PAD_XX_XX :速度设置、驱动能力设置、压摆率设置等等。
GPIO 配置
GPIO 是一个 IO 众多复用功能中的一种。
比
如 GPIO1_IO00 这个 IO 可以复用为:I2C2_SCL、GPT1_CAPTURE1、ANATOP_OTG1_ID、ENET1_REF_CLK 、 MQS_RIGHT 、 GPIO1_IO00 、 ENET1_1588_EVENT0_IN 、SRC_SYSTEM_RESET 和 WDOG3_WDOG_B 这 9 个功能,GPIO1_IO00 是其中的一种,我们
想要把 GPIO1_IO00 用作哪个外设就复用为哪个外设功能即可。
如果我们要用 GPIO1_IO00 来点个灯、作为按键输入啥的就是使用其 GPIO(通用输入输出)的功能。将其复用为 GPIO 以后还需要对其 GPIO 的功能进行配置。
八个寄存器:DR、GDIR、PSR、ICR1、ICR2、EDGE_SEL、IMR 和 ISR。
GPIO时钟使能
CMM 有CCM_CCGR0~CCM_CCGR6 这 7 个寄存器,这 7 个寄存器控制着 I.MX6U 的所有外设时钟开关。