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