打印

请问stm32怎么实现us延时

[复制链接]
7761|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
djjyi|  楼主 | 2011-9-29 12:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在在stm32上跑freertos系统,但现在想做个us级别的延时函数,请问该怎么做?谢谢
沙发
mohanwei| | 2011-9-29 12:50 | 只看该作者
os做us延时……
先关中断再说吧……

使用特权

评论回复
板凳
香水城| | 2011-9-29 13:16 | 只看该作者
最简单的办法是启动一个定时器,关闭这个定时器的所有中断,循环读出定时器的计数器,软件比较到适当的时候即可。

使用特权

评论回复
地板
libinxtdj| | 2011-9-29 13:31 | 只看该作者
滴答时钟吧。。

使用特权

评论回复
5
mohanwei| | 2011-9-29 13:50 | 只看该作者
最简单的办法是启动一个定时器,关闭这个定时器的所有中断,循环读出定时器的计数器,软件比较到适当的时候即可。
香水城 发表于 2011-9-29 13:16

用到us延时,估计是想实现某些时序……如果用定时器比较的方式,假设刚比较到0.5us,然后别的任务就把你的任务抢夺了呢……:lol

使用特权

评论回复
6
djjyi|  楼主 | 2011-9-29 14:02 | 只看该作者
用到us延时,估计是想实现某些时序……如果用定时器比较的方式,假设刚比较到0.5us,然后别的任务就把你的任务抢夺了呢……:lol
mohanwei 发表于 2011-9-29 13:50

也是呢 我正郁闷这个

使用特权

评论回复
7
香水城| | 2011-9-29 15:20 | 只看该作者
用到us延时,估计是想实现某些时序……如果用定时器比较的方式,假设刚比较到0.5us,然后别的任务就把你的任务抢夺了呢……:lol
mohanwei 发表于 2011-9-29 13:50


这说明你选择的OS不适合你的应用需求!

使用特权

评论回复
8
kangwuwei| | 2011-9-30 14:15 | 只看该作者
SysTick

使用特权

评论回复
9
李富贵| | 2011-10-1 19:20 | 只看该作者
先把Systick中断关掉,然后用任意方法延迟都可以,结束后打开Systick中断即可。
SysTick中断关闭后,不会有别的任务来抢夺,除非你调用xSemaphoreTake、xQueueReceive这些把控制权交给FreeRTOS的函数。关闭SysTick中断的唯一问题会导致Timer误差加大,看你能不能承受了。

使用特权

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

本版积分规则

43

主题

294

帖子

0

粉丝