STM32
直播中

张莹

7年用户 1021经验值
私信 关注
[问答]

延时误差大是为什么

我用 原子哥的 Systick 计数模式,延时了,3.2 秒,这个 3.2 秒的结果,是在 MDK 软件中,用 J-Link 连接开发板,硬件在线仿真测试的时间。
然后,我用 led 灯,延时 3.2 秒循环,闪烁,发现,闪烁的时间,根本就没有 3.2 秒,恐怕,连 1 秒钟,也要差点。
我的板子晶振是 8 MHz,然后,那个 delay_init(8), 参数,是 8 ,用的 4 个delay_ms(1000),延时,3.2 秒,怎么误差会这么大????
是我哪里搞错了,还是,硬件仿真,本来误差就这么大???????
求解呀。
64脚实验.rar (3.65 MB )

回帖(9)

徐凤

2020-5-22 13:40:38
硬件仿真还能测试时间了?
在哪里看啊?我从来都无法硬件仿真查看时间...
举报

徐振方

2020-5-22 13:46:20
回复【2楼】发烧友:
-------------------------------
原子哥。我是这么设置的
在“Options for Target”选项卡中,选择“Debug”,然后,右边的“Use”选择框,选中,“Cortex M/R J-Link/J-Trace”项。
然后,用 J-Link 连接开发板,点击 调试 后,在左边的 寄存器 观察窗口中,看 运行时间。
这样,是不是错了啊?如果,错了,有其它办法测时间吗?
举报

尤娟

2020-5-22 13:55:48
呵呵,看看delay_ms的说明,
//延时Nms
//注意Nms的范围
//Nms<=0xffffff*8/SYSCLK
//对72M条件下,Nms<=1864 
void delay_ms(u16 nms)
{     
...      
}   
举报

陈霞玻

2020-5-22 14:02:16
delay_init 的参数是sysclk的频率,
也就是在Stm32_Clock_Init初始化完成后,delay_init的参数就无法改变了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分