1. GPIO 配置核心
C2000 的 GPIO 配置主要分三步:
选择引脚功能
↓
设置输入/输出方向
↓
配置上拉、采样、输出电平
2. 常用寄存器
| 寄存器 | 作用 |
|---|---|
| GPAMUX / GPBMUX | 选择普通 GPIO 或外设功能 |
| GPADIR / GPBDIR | 设置输入 / 输出方向 |
| GPAPUD / GPBPUD | 设置上拉是否使能 |
| GPAQSEL / GPBQSEL | 设置输入采样方式 |
| GPASET / GPBSET | 输出置 1 |
| GPACLEAR / GPBCLEAR | 输出清 0 |
| GPATOGGLE / GPBTOGGLE | 输出翻转 |
| GPADAT / GPBDAT | 读取当前电平 |
3. MUX 功能选择
每个 GPIO 一般用 2 bit 选择功能,所以要用二进制理解:
| MUX 值 | 十进制写法 | 含义 |
|---|---|---|
00 |
0 |
普通 GPIO |
01 |
1 |
外设功能 1 |
10 |
2 |
外设功能 2 |
11 |
3 |
外设功能 3 |
也就是说:
00、01、10、11
一共 4 种功能选择
具体 01 / 10 / 11 对应哪个外设,要查芯片手册里的 GPIO MUX 表。
例子
ini
EALLOW;
// A 组 GPIO:GPIO0 ~ GPIO31
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // 00:GPIO0 作为普通 GPIO
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 3; // 11:GPIO1 选择外设功能 3
// B 组 GPIO:GPIO32 ~ GPIO63
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // 00:GPIO32 作为普通 GPIO
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // 11:GPIO34 选择外设功能 3
EDIS;
注意:配置 GPIO 控制寄存器时,通常必须放在
EALLOW;和EDIS;之间。
EALLOW表示允许修改受保护寄存器,EDIS表示关闭修改权限。没有EALLOW,有些配置可能写不进去。
4. GPIO 分组规律
| GPIO 范围 | MUX 寄存器 |
|---|---|
| GPIO0 ~ GPIO15 | GPAMUX1 |
| GPIO16 ~ GPIO31 | GPAMUX2 |
| GPIO32 ~ GPIO47 | GPBMUX1 |
| GPIO48 ~ GPIO63 | GPBMUX2 |
简单记:
GPA 管 GPIO0 ~ GPIO31
GPB 管 GPIO32 ~ GPIO63
每 16 个 GPIO 用一个 MUX 寄存器
5. 配置 GPIO 输出
以 GPIO0 输出 LED 为例:
ini
EALLOW;
// 选择普通 GPIO 功能
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
// 设置为输出
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
// 可选:关闭上拉
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;
EDIS;
输出控制:
ini
GpioDataRegs.GPASET.bit.GPIO0 = 1; // 输出高电平
GpioDataRegs.GPACLEAR.bit.GPIO0 = 1; // 输出低电平
GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1; // 翻转电平
6. 配置 GPIO 输入
以 GPIO0 输入按键 为例:
ini
EALLOW;
// 选择普通 GPIO 功能
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
// 设置为输入
GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;
// 使能上拉
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;
// 输入同步采样
GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 0;
EDIS;
读取输入:
scss
if(GpioDataRegs.GPADAT.bit.GPIO0 == 0)
{
// GPIO0 为低电平
}
7. 配置外设引脚
比如把 GPIO0 配成 EPWM1A:
ini
EALLOW;
// GPIO0 选择外设功能 1:EPWM1A
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;
EDIS;
注意:
MUX 只是把引脚切到 EPWM1A。
真正的 PWM 频率、周期、占空比,还要配置 EPwm1Regs。
8. 总结
css
GPIO 配置 = EALLOW + MUX 选功能 + DIR 设方向 + PUD/QSEL 配输入特性 + DAT/SET/CLEAR/TOGGLE 读写电平
普通 GPIO 重点看:
MUX、DIR、DAT
外设引脚重点看:
MUX + 对应外设寄存器