硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2747|回复: 2
收起左侧

[FreeRTOS] vtaskdelay的时间大小设置依据是什么

[复制链接]

4

主题

12

回帖

24

积分

新手上路

积分
24
发表于 2017-7-25 12:24:41 | 显示全部楼层 |阅读模式
在freertos系统里,假如我有很多任务,每个任务要靠vtaskdelay来阻塞用来切换下一个任务,我的问题是,这个vtaskdelay的时间大小设置依据是什么,能否举个例子,让我清楚这个vtaskdelay的时间在不同任务下应该设置多少
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107027
QQ
发表于 2017-7-25 12:34:50 | 显示全部楼层
一般定期轮询类的任务使用延迟函数,比如LED闪烁,按键扫描,触摸扫描等,这种需要周期性执行的。具体时间也比较确定,比如LED,一般都是几百ms,按键扫描是10ms,触摸扫描一般是1-20ms。

而其它的应用,建议采用事件触发方式的,比如你的CAN接到消息了,在CAN中断发送消息队列给任务,平时没有CAN消息的时候,CAN任务就一直处于等待CAN消息的状态。其它的一些外设,都是这个套路。

ps:帮你修改了下题目,方便其他网友查看。
回复

使用道具 举报

4

主题

12

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2017-7-27 16:20:49 | 显示全部楼层
硬汉哥,假如 有个5个任务,心跳1000HZ
                                             1Thread        优先级  5      vtaskdelay(10)
                                             2Thread        优先级  4      使用计数信号量,响应来自串口的信号量
                                             3Thread        优先级  3      vtaskdelay(10)
                                             4Thread        优先级  3      vtaskdelay(40)
                                             5Thread        优先级  2      vtaskdelay(50)
                                             6Thread        优先级  2      vtaskdelay(10)

我现在清楚,任务1,肯定是10ms执行一次,
                     任务2,如果有信号量来了,且任务1block,就执行否则就block
                     任务3和4,在任务1和任务2,都阻塞,任务3和任务4按1ms切换任务
                     任务5和6,在任务1、2、3、4都阻塞,任务5和6按按1ms切换任务,
     我这样分析:任务5、6执行理想的情况下,每次进入执行的时候最多10ms,任务1阻塞同时、2、3、4也阻塞,就留出10ms的时间给5、6
                          我老怕,万一出现极端情况,没有任务5、6的执行时间。比如,任务3的运行时间是50ms(包含delay),
                            任务4运行时间50ms(包含delay),就是任务3阻塞10ms,任务4执行10ms,然后delay40,下一次,任务3执行40ms,进入阻塞了,又开始
                             执行任务4了,他两个交替循环了。

                           是不是我的担心多余了,我老怕时间设的不好,就没办法执行低优先级的程序了,或者给低优先级的程序留的时间特别少,导致低优先级的程序运行周期特别长。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 14:08 , Processed in 0.146842 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表