【问题标题】:How to sync tasks using FreeRTOS library?如何使用 FreeRTOS 库同步任务?
【发布时间】:2021-06-01 08:23:06
【问题描述】:

我有 5 个不同的 5 个任务(函数)同时运行。我想像任何函数开始运行一样实现,然后在函数完成其过程之前其他函数不应该运行。 我想使用 FreeRTOS 来实现。 示例。

  • foo1.c ->任务1
  • foo2.c ->任务2
  • foo3.c ->任务3
  • foo4.c ->任务4
  • foo5.c ->任务5

【问题讨论】:

  • 为什么用 C 和 C++ 标记?为什么选择 AWS? “任务”到底是什么意思?您的问题缺少很多上下文。请作为这里的新用户使用tour 并阅读How to Ask

标签: freertos


【解决方案1】:

听起来您需要mutex。每个任务在开始运行时获取互斥锁,并在完成时释放它。当任何任务正在运行时,其他任务都会在互斥锁上被阻止。

【讨论】:

  • 我们可以使用计数信号量吗?如何告诉我一些基本的想法?
  • 这取决于您的共享资源的性质,它会阻止同时执行多个任务。你没有告诉你问题的细节。请为您的问题添加更多信息。
【解决方案2】:

您需要使用互斥(互斥)信号量。

Here is an example 保护 ATmega Arduino 克隆的串行端口。这样可以确保多个任务向串行端口呈现的消息不会交错(损坏)。

You can see that the semaphore is taken 在尝试写入串行端口之前,然后在任务完成其活动时给予(释放)。

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 2021-02-05
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    相关资源
    最近更新 更多