就是一个简单的延时函数:
void Delay_us(unsigned int t)
{
unsigned int i;
volatile unsigned int n;
for(i = 0; i < t; i++)
{
for(n = 0; n < 14; n++);
}
}
void main(void)
{
.....
LED_ON;
Delay_us(1000);
LED_OFF;
....
}
将工程选项中的Debug选择 use simulator,用软件仿真Delay_us函数,观察其运行时间(调试窗口左边的Internal中的sec可以看到已运行的时间),其结果为1027uS(Delay_us(1000),但我用示波器观察,波形的宽度却为1750uS,相差很大,请问可能是什么原因?以下原因已排查:
1、示波器没有问题,使用也没有问题(这型号示波器我用了快8年了)
2、LED_ON LED_OFF执行时间很短,就一条指令
我的单片机型号是:STM32F103R8,工程选项中选的也是这个型号,工程选项中的晶振为8M,实际也为8M,main函数之前的初始化代码已经系统内核频率设定为72MHZ,Debug中唯一的设置项:limit speed to real time也试过了,没有作用。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
那个时间你不能和示波器比
只能在仿真环境下看的!!!
---------------------------------
谢谢!
请问应该在哪看一段代码实际运行时间是多长呢(不用示波器和逻辑分析仪的方法)?以前用的是AVR,在AVRSTUDIO下可以看到精确的运行时间。另外,我现在用的硬件仿真器是JTAG V7,用硬件仿真也看不了函数运行时间是多长,是不是我看错了地方?我现在观察的是调试窗口左边的Internal --> sec,Analysis windows看到的时间也是一样的。
---------------------------------
可以看的
在软件仿真的时候,MDK的最右下脚.
有个 t1:0.00000xxxx sec的,就是仿真的执行时间.
---------------------------------
右下脚显示的时间就是我上面所说的Internal---Sec。
这个时间与实测值相差很大
---------------------------------
差距总是有的,呵呵.软件仿真肯定不可能完全替代真实情况的.这点你要明确.
一周热门 更多>