架构CCM - Clock Control Module,时钟控制模块IOMUXC - IOMUX Controller, IO复用控制器GPIO:General-purpose input/output,通用的输入输出口读GPIO写GPIO
架构

CCM - Clock Control Module,时钟控制模块
- CCM_CCGRy 寄存器中的2位决定该组GPIO是否使能
- 参考资料:芯片手册《Chapter 18: Clock Controller Module (CCM)》;
IOMUXC - IOMUX Controller, IO复用控制器
- 参考资料:芯片手册《Chapter 32: IOMUX Controller (IOMUXC)》;
- IOMUXC_SW_MUX_CTL_PAD_<PADNAME>:选择引脚复用模式、是否启用回环功能;


- IOMUXC_SW_PAD_CTL_PAD_<PAD_NAME>:设置引脚参数。

名词解释
"IOMUXC_SW_MUX_CTL_PAD_<PAD_NAME>" 是一个典型的寄存器名称,通常出现在微控制器或处理器的硬件编程中,尤其是在配置I/O复用器(I/O Multiplexer,简称IOMUX)时。这个名称可以分解为几个部分来理解:
- IOMUXC: 这部分通常表示I/O复用器配置模块(I/O Multiplexer Configuration)的缩写。它是一个硬件模块,用于配置和管理微控制器上的引脚功能。
- SW: 这表示软件(Software),说明这个寄存器是通过软件来配置的。
- MUX: 这是复用器(Multiplexer)的缩写,指的是用于选择信号路径的电子组件。在这里,它用来指示这个寄存器控制的是引脚的功能复用。
- CTL: 这通常是控制(Control)的缩写,表示该寄存器用于控制相关的功能。
- PAD: 这指的是微控制器的引脚(Pad),也就是微控制器与外部世界连接的物理点。
- <PAD_NAME>: 这是一个占位符,代表具体的引脚名称。不同的微控制器有不同的引脚命名规则,这个名称会根据实际的引脚来替换。 综合来看,"IOMUXC_SW_MUX_CTL_PAD_<PAD_NAME>" 就是指定微控制器上特定引脚(<PAD_NAME>)的I/O复用控制寄存器。通过编程这个寄存器,开发者可以设置该引脚用于哪种功能,比如作为GPIO(通用输入输出)、UART(通用异步收发传输器)等。
GPIO:General-purpose input/output,通用的输入输出口
- GPIOx_GDIR(GPIO Direction Register):设置引脚方向,每位对应一个引脚,1-output,0-input;
- GPIOx_DR(GPIO Data Register):设置输出引脚的电平,每位对应一个引脚,1-高电平,0-低电 平;
- GPIOx_PSR(PAD Status Register):读取引脚的电平,每位对应一个引脚,1-高电平,0-低电平;
读GPIO
- 设置 CCM_CCGRx 寄存器中某位使能对应的 GPIO 模块 // 默认是使能 的,上图省略了
- 设置 IOMUX 来选择引脚用于 GPIO;
- 设置 GPIOx_GDIR 中某位为 0,把该引脚设置为输入功能;
- 读 GPIOx_DR 或 GPIOx_PSR 得到某位的值(读 GPIOx_DR 返回的是 GPIOx_PSR 的值)。
写GPIO
- 设置 CCM_CCGRx 寄存器中某位使能对应的 GPIO 模块 // 默认是使能 的,上图省略了
- 设置 IOMUX 来选择引脚用于 GPIO;
- 设置 GPIOx_GDIR 中某位为 1,把该引脚设置为输出功能;
- 写 GPIOx_DR 某位的值;
需要注意的是,你可以设置该引脚的 loopback 功能,这样就可以从GPIOx_PSR 中读到引脚的有实电平;你从 GPIOx_DR 中读回的只是上次设置的值,它并不能反应引脚的真实电平,比如可能因为硬件故障导致该引脚跟地短路了,你通过设置 GPIOx_DR 让它输出高电平并不会起效果。

Address: 229_0000h base + 1Ch offset = 229_001Ch

20A_C000
20A_C004
20A_C008







