硬汉嵌入式论坛

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

[FreeRTOS] FreeRTOS任务调度的问题

[复制链接]

3

主题

3

回帖

12

积分

新手上路

积分
12
发表于 2017-7-19 10:57:53 | 显示全部楼层 |阅读模式
有三个任务,
1.按键扫描任务,结束延时10ms进行任务切换,优先级3;
2.温湿度,RTC,ADC采样,这个任务执行下来大概要100多毫秒,每次时间不一样,优先级2;
3.LCD显示任务,优先级1。
运行的效果是,LCD只任务只执行了几次就没有运行了
问题是,
1.按键扫描频率很快,优先级又高,这样采样任务还没结束,按键任务又抢占运行,之后又切换到采样任务,这样就导致任务3很难运行;
2.采样任务和传感器通信,需要保证时序,按键任务抢占会打断采样通信的时序,这个又怎么解决?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2017-7-19 11:18:38 | 显示全部楼层
1. 按键扫描任务10ms执行一次,这个没问题。
2. 温湿度的通信,修改下,最好1s更新一次即可,不用100ms这么快更新一次。
     RTC基本不占用时间,也是1s执行一次。
     ADC这个,最好用DMA,这样基本不占用时间了,直接读取即可。
    这么一修改,这个任务基本就不怎么占用CPU运行时间了。
回复

使用道具 举报

3

主题

3

回帖

12

积分

新手上路

积分
12
 楼主| 发表于 2017-7-19 13:58:01 | 显示全部楼层
我的问题主要是按键任务优先级高,运行频率也高,会不断抢占温湿度传感器任务,这样会打断通信时序(我估计的,调试的时候每次都停在相关函数),我把温湿度的优先级调到按键上面,暂时没有问题[/b
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2017-7-19 14:22:28 | 显示全部楼层

回 shishuiliu 的帖子

shishuiliu:我的问题主要是按键任务优先级高,运行频率也高,会不断抢占温湿度传感器任务,这样会打断通信时序(我估计的,调试的时候每次都停在相关函数),我把温湿度的优先级调到按键上面,暂时没有问题[/b (2017-07-19 13:58)
按键10ms不高,我们的例子按键扫描,触摸扫描等都是间隔1ms切换,最高优先级任务里面。

不符合实时性的器件,比如DS18B20这种,读取温度时必须得独占CPU,时序性要求太高。所以就放在低优先任务就行,让他的运行频率越低越好,推荐1s,然后加个调度锁即可。

不管怎样,满足你的应用即可。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 05:30 , Processed in 0.321660 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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