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:HWI/TSK 的代码执行序列

Guru**** 2609895 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/684982/rtos-code-execution-sequence-of-hwi-tsk

工具/软件:TI-RTOS

你(们)好  

在我的项目中、我在中断 ISR 中接收 SCI 数据、然后在任务中分析数据。 请如下所示:

我的问题是在 SEM_post (&SEM_SCIBRX)执行并且信标被发布后、它是否会转到任务 tSciBRx

或者继续在 SEM_post 下输出"Scib.U16_Rxlength = 0"行?

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

    什么是 SEM_post?

    让我们调用信标任务 A 上挂起的任务。 注意:调用 SEM_post 后、任务 A 变为"READY"。 它是否开始运行取决于调用 SEM_POST 的线程的以下条件。

    如果它是 HWI 或 SWI、则该 Hwi 或 Swi 线程将继续、直至其退出。 然后、如果没有更高优先级的线程需要读取以运行、则任务 A 将运行。
    如果它是一个更高优先级或同等优先级的任务(称为 IT TaskB)、则任务 B 将继续执行。 一旦任务 B 达到阻塞状态(例如 TSK_SLEEP)并且没有更高优先级的线程就绪、任务 A 将运行。
    如果它是优先级较低的任务、则任务 A 将运行。 调用 SEM_pend wll 的任务处于被抢先状态。

    上面假定没有其他任务具有与 TaskA 准备运行相同的优先级。 如果有、一旦没有更高优先级的线程正在运行或准备好运行、那么首先"准备就绪"的任何人都将首先运行。

    在本例中、ISR 会继续执行、直至完成。

    Todd