就是一个简单的延时函数:
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也试过了,没有作用。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
唉,这个差距不是一点半点啊.....这应该是MDK的又一不足,也可以没设置好吧,不过我全找过了,没有地方可设了。
有时间试试IAR,有结果了再告诉大家。谢谢了!
一周热门 更多>