C2000 launchpad 调试中碰到很奇怪的问题,望高手解惑
[复制链接]
在用C2000 launchpad (tms320f28027)测试板载led时,碰到如下问题:
1.功能描述:实现4个led灯的交替闪烁,led2、led3同时亮灭 ,led3、led5同时灭亮
2.实现代码:
int main(void)
{
InitSysCtrl(); // 系统初始化子程序,在F28_sysctrl.c中
InitGpio();//初始化GPIO,已经把GPIO0~GPIO3初始化为GPIO,OUTPUT
DINT;
InitPieCtrl();//初始化PIE控制器
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();//初始化PIE向量表
//led状态初始化语句
GpioDataRegs.GPADAT.bit.GPIO0 = 1;//初始状态,led2灭
GpioDataRegs.GPADAT.bit.GPIO1 = 0;//初始状态,led4亮
GpioDataRegs.GPADAT.bit.GPIO2 = 1;//初始状态,led3灭
GpioDataRegs.GPADAT.bit.GPIO3 = 0;//初始状态,led5亮
while(1)
{
int i;
for(i=0;i<50;i++)
{
DELAY_US(10000L);//10ms
}
LED0_TOGGLE = 1;//宏定义,反转寄存器
LED1_TOGGLE = 1;
LED2_TOGGLE = 1;
LED3_TOGGLE = 1;
}
}
3.出现的问题:
ccs5.3中调试程序,把程序加载到ram中运行后,点击全速运行(resume,F8),不能够实现预期效果,而是4个led同时亮灭。通过观察窗口查看GpioDataRegs.GPADAT.bit.GPIO0 ~GpioDataRegs.GPADAT.bit.GPIO03的值,发现主循环前的led初始化语句没有起作用。
尝试(1):加载完成,在led初始化语句之前加断点,然后单步运行完这四句初始化语句后,再全速运行,能够实现预期效果。
尝试(2):把led初始化语句换成,GpioDataRegs.GPADAT.all=GpioDataRegs.GPADAT.all |0xfffffff5; ,加载完成,全速运行(不需单步),能够实现预期效果。
以上问题,久思不得其解,还望高手解惑,谢谢!