问下DSP2812为什么程序烧写到flash中和在ram中调试的延时时间会不一样呢? 5

问下为什么程序烧写到flash中和在ram中调试的延时时间会不一样呢?就一个简单的流水灯程序,主要程序如下:for(i=0;i<6;i++){GpioDataRegs.G... 问下为什么程序烧写到flash中和在ram中调试的延时时间会不一样呢?
就一个简单的流水灯程序,主要程序如下:
for(i = 0;i < 6;i++)
{
GpioDataRegs.GPADAT.all = 1<<i;
delay(300);
}
延时程序如下:
void delay(Uint16 delaytime)
{
Uint16 i,j;
for(i=0;i<delaytime;i++)
for(j=0;j<6250;j++);
}

就这个程序烧写到flash中比在ram中延时时间明显长了好多,这是为什么呢?
展开
 我来答
ATF144X
2012-07-16 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4609万
展开全部
因为cpu从flash的读取速度远低于cpu从ram中的读取速度,一般要加1或2个周期的延迟。所以就有差别了。
追问
那如果2812的时钟是150M,他的时钟周期是6.67ns,这个是指直接ram运行的时间?
如果我程序用for循环来延时,如何计算大致的延时时间呢。
以前用arm,都大致能计算的差不多的
lbydhr1234
2012-07-21 · TA获得超过359个赞
知道小有建树答主
回答量:333
采纳率:100%
帮助的人:151万
展开全部
程序在 RAM 中运行的快啊,一般说主频 100MHz 是指在 RAM 中,在 Flash 里是要缩水的。假如你的延时程序在 RAM 种可能 1000 个时钟周期就可以运行完,但在 Flash 里虽然也是 1000 个时钟周期,但时钟周期却变长了。所以很多情况下,比较关键的程序段会被拷贝到 RAM 里运行,以增加性能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式