TI中文支持网
TI专业的中文技术问题搜集分享网站

DSP28335 指令执行时间问题

大家好!

刚刚在28335的ePWM零点中断函数中插入了一个while循环做一个简单的延时程序,如下所示

interrupt void EPWM1_INT_ISR(void)

{

        Uint16 delay = 200;

        EPwm1Regs.ETCLR.bit.Int = 1;

        IRE |= M_INT3;

        PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

        GPIO7_TEST = 1;  //置GPIO7为高

        while(delay != 0)

        {

                delay -= 1;

        }

        GPIO7_TEST = 0;  //置GPIO7为低

}

经过编译后的汇编指令如下图:

整个while循环汇编指令数为:3*200 = 600 条;

CPU主时钟为120MHz,则计算出的执行时间为600 * 1/120000000 = 5 uS;

即整个while循环执行时间应该为5uS,

但是通过GPIO7输出的电平来看,while 循环的执行时间却是20uS(红色 2通道高电平持续时间),如下图:

这之间差别为什么这么大呢?

感觉CPU的主频不是工作在120MHz,而是工作在其4分频的频率下,即30MHz,

我将CPU主时钟频率设置为150MHz时,理论上的执行时间为4uS,但实际测出来的执行时间是16uS,总有个4倍差,这是怎么回事?

z fang:

再说明一下,程序是连接仿真器XDS100vS在DSP内部RAM中运行

赞(0)
未经允许不得转载:TI中文支持网 » DSP28335 指令执行时间问题
分享到: 更多 (0)