打印

开个讨论帖,关于systick延时的问题

[复制链接]
930|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunmeat|  楼主 | 2014-11-7 11:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.该延时可用于什么情况
2.该延时不可用于什么情况
3.有什么延时可以更好的取代他呢
沙发
sunmeat|  楼主 | 2014-11-7 11:13 | 只看该作者
先贴几个在网上找到的关于systick延时的缺点:
1.会产生重入的问题,即在一个函数没有结束之前,又再次调用这个函数。比如一个函数func()运行过程中被中断,而中断处理中又调用func(),则产生重入的问题。
2.一般Systick是作为多任务的系统的时基(好像uCos就是用是Systick作为时基的)这样的话就不能用Systick来延时了
3.不能在SysTick中断调用SysTick_delay,或者任何比SysTick优先级高的中断调用SysTick_delay,否则SysTick_delay无法跑了,而导致看门狗溢出,系统挂了

使用特权

评论回复
板凳
zitral| | 2014-11-7 17:21 | 只看该作者
sunmeat 发表于 2014-11-7 11:13
先贴几个在网上找到的关于systick延时的缺点:
1.会产生重入的问题,即在一个函数没有结束之前,又再次调用 ...

楼主研究的怎么样了?
要精确延时,开个计时器是个不错的选择。

使用特权

评论回复
地板
sunmeat|  楼主 | 2014-11-7 20:59 | 只看该作者
zitral 发表于 2014-11-7 17:21
楼主研究的怎么样了?
要精确延时,开个计时器是个不错的选择。

看我的另一个帖子,是原子的代码,用systick实现的,有个网友给出了用DWT的,不过我没测试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

208

主题

2132

帖子

13

粉丝