首先是确定时钟
在技术参考中,找到时钟章节
只能观察每个寄存器,才能看到寄存器控制那个外设的时钟
第二找到对应GPIO以及寄存器;
在我板子里面的原理图是
但是TI的提供的库函数是分ABC的,刚开始就不知道怎麽分。GPIO68到GPIO64,应该是在ABC的那个端口;
GPIO68到GPIO64确定端口
在DSP开发原理中找到;同时也可以在寄存器中观察出来(截图太长了)。所以用的是c端口
值得注意的是:DSP开发原理是不教你怎麽去配置输入输出的;
全靠自己看结构图;或者用普中,或者其他公司的开发攻略;
配置输出
配置方向寄存器;
配置复用输出;
在复用表方面,各个公司的开发原理,又做得不够好;
如上图MUX复用表;64到68只有GPIO功能,没有其他复用;
程序
配置控制有控制寄存器;
写数据有数据寄存器;
void led_all_flow_init()
{
EALLOW;
SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;//系统控制,外设时钟3
GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 0;//复用寄存器 0为gpio
GpioCtrlRegs.GPCPUD.bit.GPIO64 = 1;//上拉寄存器 1为上上拉
GpioCtrlRegs.GPCDIR.bit.GPIO64 = 1;//方向寄存器,1为输出
GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 0;
GpioCtrlRegs.GPCPUD.bit.GPIO65 = 1;
GpioCtrlRegs.GPCDIR.bit.GPIO65 = 1;
GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 0;
GpioCtrlRegs.GPCPUD.bit.GPIO66 = 1;
GpioCtrlRegs.GPCDIR.bit.GPIO66 = 1;
GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 0;
GpioCtrlRegs.GPCPUD.bit.GPIO67 = 1;
GpioCtrlRegs.GPCDIR.bit.GPIO67 = 1;
GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 0;
GpioCtrlRegs.GPCPUD.bit.GPIO68 = 1;
GpioCtrlRegs.GPCDIR.bit.GPIO68 = 1;
EDIS;
}
#define LED1_TOGGLE GpioDataRegs.GPCTOGGLE.bit.GPIO68 = 1 //反转gpio寄存器
#define LED2_TOGGLE GpioDataRegs.GPCTOGGLE.bit.GPIO67 = 1
#define LED3_TOGGLE GpioDataRegs.GPCTOGGLE.bit.GPIO66 = 1
#define LED4_TOGGLE GpioDataRegs.GPCTOGGLE.bit.GPIO65 = 1
#define LED5_TOGGLE GpioDataRegs.GPCTOGGLE.bit.GPIO64 = 1
void delay_led()
{
int i = 0;
int j = 0;
for (i = 10000; i > 0; i--)
for (j = 10000; j > 0; j--);
}
#define us_us 1000000
void led_all_flow_twinkle(void)
{
LED1_TOGGLE;
DELAY_US(us_us);//自带延时
LED2_TOGGLE;
DELAY_US(us_us);
LED3_TOGGLE;
DELAY_US(us_us);
LED4_TOGGLE;
DELAY_US(us_us);
LED5_TOGGLE;
DELAY_US(us_us);
}