CMSIS-RTOS RTX 临界中断该怎么处理?

2019-08-16 18:55发布



求助:
MDK自带系统  CMSIS-RTOS RTX ,当某一个task运行时,有3行代码必须要一起运行,为了防止系统运行至此3行代码时,没运行完转而运行其他TASK,而造成程序有漏洞的问题,该做哪些处理?

不胜感激!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
expresschs
2019-08-17 11:14
函数tsk_lock
函数原型:
void tsk_lock (void);
函数描述:
函数tsk_lock用于禁止RTX内核定时器中断,因此也就禁止了任务切换。
使用这个函数要注意以下问题:
1. 函数tsk_lock不支持嵌套调用。
2. 不允许在中断服务程序中调用tsk_lock。
3. RTX内核定时器被关闭期间,RTX内核任务调度器和需要时间片调度的任务被阻塞。设置的任务延迟时间不再工作。因此,强烈建议关RTX内核定时器中断的时间越短越好。
使用举例:
#include <rtl.h>

void protect_critical_op () {
tsk_lock();
do_critical_op ();
tsk_unlock();
}

一周热门 更多>