各位老师,大神好
小弟遇到一个应用,使用的芯片为28027,采用内部时钟,60MHZ,现在需要在中断中求一个数组后面几个数字的平均值,程序如下:
#pragma CODE_SECTION(FilterBus, "ramfuncs");
void FilterBus(void)
{
Uint16 k;
long vbustemp;
vbustemp=0;
for(k=2;k<10;k++)
vbustemp=vbustemp+vBusSensedBuff[k];
vBus=vbustemp>>3;
}
在主程序中,已经进行代码从flash搬移到RAM中了,中断程序也已经拷贝到RAM区了,可是不知道为什么执行这几条加法指令,通过在该函数的调用前和调用后修改某一个GPIO引脚的方式,通过示波器观察,该段程序的运行时间接近3.6us,感觉仅仅简单的32位数相加,和一次移位,怎么花费这么长的时间呢?谢谢
Green Deng:你好,个人认为,用示波器观测的结果,时间上会加上GPIO的动作时间。推荐你可以参考一下这个帖子的内容:e2echina.ti.com/…/137378
各位老师,大神好
小弟遇到一个应用,使用的芯片为28027,采用内部时钟,60MHZ,现在需要在中断中求一个数组后面几个数字的平均值,程序如下:
#pragma CODE_SECTION(FilterBus, "ramfuncs");
void FilterBus(void)
{
Uint16 k;
long vbustemp;
vbustemp=0;
for(k=2;k<10;k++)
vbustemp=vbustemp+vBusSensedBuff[k];
vBus=vbustemp>>3;
}
在主程序中,已经进行代码从flash搬移到RAM中了,中断程序也已经拷贝到RAM区了,可是不知道为什么执行这几条加法指令,通过在该函数的调用前和调用后修改某一个GPIO引脚的方式,通过示波器观察,该段程序的运行时间接近3.6us,感觉仅仅简单的32位数相加,和一次移位,怎么花费这么长的时间呢?谢谢
user5074486:
回复 Green Deng:
你好,按照贴子上的方法,ccs在线调试时间还是3us左右,有点迷茫
各位老师,大神好
小弟遇到一个应用,使用的芯片为28027,采用内部时钟,60MHZ,现在需要在中断中求一个数组后面几个数字的平均值,程序如下:
#pragma CODE_SECTION(FilterBus, "ramfuncs");
void FilterBus(void)
{
Uint16 k;
long vbustemp;
vbustemp=0;
for(k=2;k<10;k++)
vbustemp=vbustemp+vBusSensedBuff[k];
vBus=vbustemp>>3;
}
在主程序中,已经进行代码从flash搬移到RAM中了,中断程序也已经拷贝到RAM区了,可是不知道为什么执行这几条加法指令,通过在该函数的调用前和调用后修改某一个GPIO引脚的方式,通过示波器观察,该段程序的运行时间接近3.6us,感觉仅仅简单的32位数相加,和一次移位,怎么花费这么长的时间呢?谢谢
mangui zhang:使用CCS工具统计出用了多少个clk这样计算出来的时候是最准确的