c2000单步调试和全速运行结果不一致,怎么回事?非常感谢!

2019-08-05 15:26发布

本帖最后由 skylinehbu 于 2013-10-29 18:43 编辑

GPIO0~GPIO3对应四个led,单步运行时led正常闪烁,但全速运行后不正常,只有两个led闪烁。这是怎么回事?
并且调试时发现,执行完initSysCtrl后GPADAT寄存器值发生改变,
执行MyInitGpio中的语句GpioDataRegs.GPADAT.all |= 0x0000000f后不变,这是怎么回事?非常感谢!!
代码如下:
/*
* main.c
*/
#include<F2802x_Device.h>
#include<DSP28x_Project.h>

void MyInitGpio(void)
{
        EALLOW;
        GpioCtrlRegs.GPAPUD.all &= ~0x0000000f;
        GpioCtrlRegs.GPAMUX1.all &= ~0x000000ff;//bit:0/1 确定gpio0功能。。。
        GpioDataRegs.GPASET.all |= 0x0000000f;//确定改变方向的时候的初始状态
        GpioCtrlRegs.GPADIR.all |= 0x0000000f;
        GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
        GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
        GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;
        GpioCtrlRegs.GPADIR.bit.GPIO3 = 1;
        EDIS;
}
void main(void)
{
   InitSysCtrl();   //系统控制初始化
   MyInitGpio();
   DINT;      //禁止全局中断
   InitPieCtrl();
   IER = 0x0000;  //禁止CPU中断
   IFR = 0x0000;  //清楚CPU所有中断标志
   InitPieVectTable();//位向量表中的所有中断向量配置对应的入口地址
   for(;;)
   {
                GpioDataRegs.GPADAT.bit.GPIO0 = 0;
                GpioDataRegs.GPADAT.bit.GPIO1 = 0;
                GpioDataRegs.GPADAT.bit.GPIO2 = 0;
                GpioDataRegs.GPADAT.bit.GPIO3 = 0;
                DELAY_US(100000L);
                GpioDataRegs.GPADAT.bit.GPIO0 = 1;
                GpioDataRegs.GPADAT.bit.GPIO1 = 1;
                GpioDataRegs.GPADAT.bit.GPIO2 = 1;
                GpioDataRegs.GPADAT.bit.GPIO3 = 1;
                DELAY_US(100000L);

   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。