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);

   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
skylinehbu
1楼-- · 2019-08-05 18:21
 精彩回答 2  元偷偷看……
Tog
2楼-- · 2019-08-05 23:01
你的是什么片子啊??2812??
skylinehbu
3楼-- · 2019-08-06 02:17
28027
skylinehbu
4楼-- · 2019-08-06 06:03
Tog 发表于 2013-11-2 15:53
你的是什么片子啊??2812??

28027
huangfeng33
5楼-- · 2019-08-06 08:15
单步调试和运行结果不一致,一般应该是延时不够造成的,你可以在单步合适但全速不合适的地方增加延时时间试试看。
Tog
6楼-- · 2019-08-06 11:57
 精彩回答 2  元偷偷看……

一周热门 更多>