最近在玩stm32h743的开发板,在点灯时发现了一个很奇怪的现象,同样是延时200ms,用HAL_Delay(200)跟用正点原子的例程里的Delay_ms(200)不一样,HAL_Delay要稍微快一点。感觉很奇怪,然后我在线调试时更奇怪了,执行一句HAL_Delay(200)花了25s,而执行一句Delay_ms(200)大概花了7、8s的样子。
当然这里的25s,7、8s都是硬件上的时间,实际一瞬间就跑完了,但是调试界面显示一下加了25s,,,,,
你keil中的时钟设置是多少,设置 为25M与设置为8M是不是你你的这个时间差差不多了。你可以看看Keil中的配置。
至于时间不一样,可以用示波器看看哪个时间更准。
一般可能是由于实现的方式不同,感觉 HAL的库的效率比较低,时间误差可能会在长一些的。
应该是时钟的问题
如果需要延时正常,要配置和库相应的时钟才行