硬汉嵌入式论坛

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

[FreeRTOS] 【请教】FreeRTOS,一个任务中,如何根据不同的事件进行处理

[复制链接]

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2015-8-25 14:53:55 | 显示全部楼层 |阅读模式
请教下,FreeRTOS,一个任务中,如何根据不同的事件进行处理。例如:

在任务A中产生任务C事件,触发任务C开始执行操作1,;在任务B中产生任务C事件,触发任务C开始执行操作2,;中断中产生任务C事件,触发任务C开始执行操作3,大致如下:

void TaskA(void *pvParameters)
{
    .....
   任务C事件1;
}

void TaskBvoid *pvParameters)
{
    .....
   任务C事件2;
}
void XXXISR(void)
{
   ....
  任务C事件3;
}



void TaskC(void *pvParameters)
{
    .....
   switch(event)
   {
       事件1:
           操作1;break;

       事件2:           操作2;break;
       事件3:           操作3;break;
   }
}


FreeRTOS菜鸟,还请各位指点指点
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2015-8-25 15:25:38 | 显示全部楼层
方法很多,
1. 可以使用事件标志组,任务A,B和ISR给任务C发送事件标志,不同任务发送不同的事件标志位。
2. 可以使用消息队列,任务C接收到不同的消息数据处理不用操作。
3. 也可以使用在V8.2.0及其以后版本里面新增的任务邮箱功能,处理起来跟第2种基本一样。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 13:37 , Processed in 0.149344 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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