求助 困扰很长时间了
本帖最后由 tarafans 于 2012-8-23 15:56 编辑我用的是28335 想用IO做普通IO 来点亮LED灯 我先配置IO 如下
GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0; // GPIO8 = GPIO8
GpioCtrlRegs.GPADIR.bit.GPIO8 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 0; // GPIO9 = GPIO9
GpioCtrlRegs.GPADIR.bit.GPIO9 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0; // GPIO10 = GPIO10
GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 0; // GPIO11 = GPIO11
GpioCtrlRegs.GPADIR.bit.GPIO11 = 1;
接着定义
#define LED1 GpioDataRegs.GPADAT.bit.GPIO8
#define LED2 GpioDataRegs.GPADAT.bit.GPIO9
#define LED3 GpioDataRegs.GPADAT.bit.GPIO10
#define LED4 GpioDataRegs.GPADAT.bit.GPIO11
我在MAIN里这样写 LED1=1;LED2=1;LED3=1;LED4=1; 结果LED1 和LED3点不亮LED2和LED4亮但是如果我这样写
LED1=1;
DELAY_US(10);
LED2=1;
DELAY_US(10);
LED3=1;
DELAY_US(10);
LED4=1;
DELAY_US(10); 就全部亮了 不知为什么希望大家帮忙 仔细看看“System Control and Interrupt”这部分datashee。TI C2000 DSP的GPIO操作有个可以视为bug的问题,在使用DAT寄存器进行操作时,相邻的GPIO之间不能连续位操作,否则会导致操作无效。
如果你的代码中确实需要这样的操作,可以使用SET和CLEAR寄存器来做。 {:smile:} 肯定全亮的 你只是让LED=1了,在下一个LED=1之前请先关掉掉两外三个
如:LED2 = 0; LED3 = 0; LED4 = 0; 然后打开LED1 =1; 每次操作都要弄下其他3个IO口就可以了!
页:
[1]