This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/CC2650:两个任务、同步函数调用

Guru**** 2582405 points
Other Parts Discussed in Thread: CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/594885/rtos-cc2650-two-tasks-synchronizing-function-calls

器件型号:CC2650

工具/软件:TI-RTOS

您好!

我目前正在运行 两个任务任务任务1任务2这两个任务引用全局布尔变量来决定从  任务内执行哪些外部函数。 每个任务还包含一个无限 while 循环(while (1)) 以持续执行这些函数。 我注意到、具有最高优先级的任务会持续执行其 while 循环并调用外部函数、而具有较低优先级的任务甚至不会开始(我知道被调用函数会在屏幕上打印一条消息)。 如何在离散时刻在多个任务之间切换控制(不是基于时钟节拍、而是基于布尔变量状态)。 我想控制任务执行的流程、停止其中一个、允许另一个执行、然后停止该任务、并返回到原始任务(基本上是任务之间的折衷)。 请提供详细/详尽的解释、因为我对这一概念非常陌生。

 非常感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Anthony、

    只要较高优先级的任务正在运行、其他较低优先级的任务就永远不会执行。

    我们可能需要更详细地了解您想要实现的目标:

    • 两个任务都需要共享 CPU 50%的时间
    • 仅在发生特定事件时执行较低优先级的任务
    • 如果任务在特定事件上执行
    • 如果任务以特定的间隔执行

    要开始、为了允许较低优先级的任务运行、您需要将较高优先级的任务置于"暂停"状态。 有很多方法来实现它(即 Task_sleep、信标、互斥量等)

    我建议您查看 BIOS (TI-RTOS 内核)用户指南:

    可从 Resource Explorer 中获取。 在 CCS 中的"查看"菜单下、或在以下地址在线访问:

    在 Resource Explorer 中、按照以下路径操作:

    Software->TI-RTOS for CC2650 xxx -> Documents -> Documentation 链接

    在文档页面上、您可以打开 TI-RTOS 内核用户指南。

    您还可以打开 TI-RTOS 内核运行时 API 和配置(CDOC)以引用所有函数。 同步模块位于以下路径下:

    TI->SYSBIOS->KNL

    此致、

    米歇尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢、《内核用户指南》实际上非常棒