F28335将88个GPIO口分成3个部分。
A ---- GPIO0~GPIO31
B ---- GPIO32~GPIO63
C ---- GPIO64~GPIO87
所以当我们配置引脚的时候看到GPA,GPB,GPC等等,其实就是对应的是某个端口组。
既然说到配置,那就看看GPIO口如何配置。每个GPIO口都会对应着寄存器,改变寄存器的值就会改变GPIO口的配置。主要的寄存器有这几个
端口复用寄存器GPxMUXn x = A,B,C n = 1,2
DSP有很多资源,但是这些管脚无法一一对应,所以就采用了功能复用。比如一个GPIO口既可以输出PWM,也可以当串口输出使用,关键是看端口复用寄存器的取值。
输入输出方向寄存器GPxDIR x = A,B,C
某个GPIO口既可以当输出也可以当输入。
上拉禁止寄存器GPxPUD x = A,B,C
置高寄存器 GPxSET x = A,B,C
举个具体的例子吧
// 设置GPIO6输出高电平
GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; //上拉使能
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; //不复用其他外设
GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; //方向为输出
GpioDataRegs.GPASET.bit.GPIO6 = 1; //输出为高电平
//设置PWM端口
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // 上拉使能GPIO0
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // 上拉使能GPIO1
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; //复用PWM功能PWM1A
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; //复用PWM功能PWM1B
具体的配置可以参考官方历程