打印

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

[复制链接]
2228|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skylinehbu|  楼主 | 2013-10-27 23:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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);

   }
}

相关帖子

沙发
skylinehbu|  楼主 | 2013-11-1 12:39 | 只看该作者
没人啊。。。

使用特权

评论回复
板凳
Tog| | 2013-11-2 15:53 | 只看该作者
你的是什么片子啊??2812??

使用特权

评论回复
地板
skylinehbu|  楼主 | 2013-11-5 11:41 | 只看该作者
28027

使用特权

评论回复
5
skylinehbu|  楼主 | 2013-11-5 11:41 | 只看该作者
Tog 发表于 2013-11-2 15:53
你的是什么片子啊??2812??

28027

使用特权

评论回复
6
huangfeng33| | 2013-11-5 16:21 | 只看该作者
单步调试和运行结果不一致,一般应该是延时不够造成的,你可以在单步合适但全速不合适的地方增加延时时间试试看。

使用特权

评论回复
7
Tog| | 2013-11-5 16:23 | 只看该作者
skylinehbu 发表于 2013-11-5 11:41
28027

28027没用过,我觉着可能跟28335存在一个问题!就是GPIO口做输出是,给寄存器赋值最好别用GPxDAT,用GPxCTRL和GPxQSEL来配置IO口的高低吧!!

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
skylinehbu + 1 很给力!
8
zhangmangui| | 2013-11-5 16:44 | 只看该作者
单步和全速最大区别就是时间的问题
可能是你全速下 IO口的状态变化太快
所以看着没有变化

使用特权

评论回复
9
shenmu2012| | 2013-11-7 23:40 | 只看该作者
是不是延时太短的,造成两指示灯的闪烁不明显了?

使用特权

评论回复
10
拿起书本| | 2013-11-8 10:52 | 只看该作者
可能是时序上面处理太快了,先降一下速度试试看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

1

粉丝