请问stm32怎么实现us延时

[复制链接]
8716|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 | 显示全部楼层
滴答时钟吧。。
mohanwei 发表于 2011-9-29 13:50 | 显示全部楼层
最简单的办法是启动一个定时器,关闭这个定时器的所有中断,循环读出定时器的计数器,软件比较到适当的时候即可。
香水城 发表于 2011-9-29 13:16

用到us延时,估计是想实现某些时序……如果用定时器比较的方式,假设刚比较到0.5us,然后别的任务就把你的任务抢夺了呢……:lol
 楼主| djjyi 发表于 2011-9-29 14:02 | 显示全部楼层
用到us延时,估计是想实现某些时序……如果用定时器比较的方式,假设刚比较到0.5us,然后别的任务就把你的任务抢夺了呢……:lol
mohanwei 发表于 2011-9-29 13:50

也是呢 我正郁闷这个
香水城 发表于 2011-9-29 15:20 | 显示全部楼层
用到us延时,估计是想实现某些时序……如果用定时器比较的方式,假设刚比较到0.5us,然后别的任务就把你的任务抢夺了呢……:lol
mohanwei 发表于 2011-9-29 13:50


这说明你选择的OS不适合你的应用需求!
kangwuwei 发表于 2011-9-30 14:15 | 显示全部楼层
李富贵 发表于 2011-10-1 19:20 | 显示全部楼层
先把Systick中断关掉,然后用任意方法延迟都可以,结束后打开Systick中断即可。
SysTick中断关闭后,不会有别的任务来抢夺,除非你调用xSemaphoreTake、xQueueReceive这些把控制权交给FreeRTOS的函数。关闭SysTick中断的唯一问题会导致Timer误差加大,看你能不能承受了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

294

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部