.为什么systick 时钟延时单次延时不能超过两秒

我使用stm32f072的systick时钟延时中断延时、延時1us程序就没法实现了时钟延时运行在48m,定时10us没问题、想要延时1us该如何实现呢

一下是我的程序:这个是初始化程序

肯定能延时到1us啊,要麼使用定时器延时要么使用软件延时,但是软件延时不是很精确
定时器延时有两种方法,第一种直接设置成1us中断1次也就是说systick config函数的參数是XMHz/1000000。但是这样频繁的打断CPU不是很合适
另外在说一个方法,将定时器的时间间隔设计成为1ms的中断这样你可以编写一个ms的延时。假设伱的CPU是72M那么也就是说SYSTICK->VAL从72M/1000-1开始,数到0结束然后你再把这72M/1000等分成1000份,那么每一份又是1us了这样就能使用定时器产生1us的时间间隔了。

参考资料

 

随机推荐