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

C28346运算时间问题

在用C28346做for循环操作时,觉得花费的时间有些多:

for(pll=0;pll<8;pll++)
{
tpll=udclevel_sz[pll];
turn[tpll]=(7-pll);
turn_en[tpll]=turn[tpll]>>2;
turn_led[tpll]=turn[tpll]&0x03;
if((interrupt_count==2)&&(pll==0))
{
turn_led[tpll]=0;
}
turnen=(turn_en[tpll]<<tpll)|turnen;
turnon=(turn_led[tpll]<<(2*tpll))|turnon;
}

for(pll=0;pll<16;pll++)
{
if(fudc_ave_sz[pll]!=fudc_sz[pll])
{
error_count++;
}
}
if(error_count>0)
{
GPOC_NFPGAEN=1;
}
else
{
GPOS_NFPGAEN=1;
}

上述两个for循环操作共用去将近3.6μs的时间,请问这么点时间正常吗?更改CCS的设置是否可以使编译得到优化?

注:其中只有fudc_ave_sz和fudc_sz两个数组为浮点数组,其余变量均为16位整型数。

Johnson Chen1:

楼主是如何测试这个时间的?测试过程中是否保证没有中断产生?浮点数组为float还是double?

可以看一下反汇编内容。

在用C28346做for循环操作时,觉得花费的时间有些多:

for(pll=0;pll<8;pll++)
{
tpll=udclevel_sz[pll];
turn[tpll]=(7-pll);
turn_en[tpll]=turn[tpll]>>2;
turn_led[tpll]=turn[tpll]&0x03;
if((interrupt_count==2)&&(pll==0))
{
turn_led[tpll]=0;
}
turnen=(turn_en[tpll]<<tpll)|turnen;
turnon=(turn_led[tpll]<<(2*tpll))|turnon;
}

for(pll=0;pll<16;pll++)
{
if(fudc_ave_sz[pll]!=fudc_sz[pll])
{
error_count++;
}
}
if(error_count>0)
{
GPOC_NFPGAEN=1;
}
else
{
GPOS_NFPGAEN=1;
}

上述两个for循环操作共用去将近3.6μs的时间,请问这么点时间正常吗?更改CCS的设置是否可以使编译得到优化?

注:其中只有fudc_ave_sz和fudc_sz两个数组为浮点数组,其余变量均为16位整型数。

BIN YAO1:

回复 Johnson Chen1:

是放在while(1)里面执行的,每次执行完翻转管脚,然后通过示波器观察管脚高低电平的时间。程序中并未开启中断。浮点数组定义的是float。反汇编不是很懂怎么看。

赞(0)
未经允许不得转载:TI中文支持网 » C28346运算时间问题
分享到: 更多 (0)