FreeRTOS操作系统例程(4):调度锁

1.调度锁函数只是禁止了任务调度,并没有关闭任何中断

2.调度锁开启函数 vTaskSuspendAll 和调度锁关闭函数 xTaskResumeAll 一定要成对使用

3.切不可在调度锁开启函数 vTaskSuspendAll 和调度锁关闭函数 xTaskResumeAll 之间调用任何会引起任务切换的 API,比如 vTaskDelayUntil、vTaskDelay、xQueueSend 等


/*

*********************************************************************************************************

*  函 数 名: vTaskLED

*  功能说明: LED 闪烁

*  形 参: pvParameters 是在创建该任务时传递的形参

*  返 回 值: 无

* 优 先 级: 2

*********************************************************************************************************

*/

static void vTaskLED(void *pvParameters)

{

while(1)

{

vTaskSuspendAll(); /* 开启调度锁 */

printf("任务 vTaskLED 正在运行\r\n");

//xTaskResumeAll ();

if(!xTaskResumeAll()) /* 关闭调度锁,如果需要任务切换,此函数返回 pdTRUE,否则返回 pdFALSE */

{

taskYIELD ();

}

bsp_LedToggle(2);

vTaskDelay(200);

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,165评论 1 32
  • lab4 是实现多处理器支持以及抢占式任务调度,exercize代码见 这里。 1 多处理器启动流程 1.1 多处...
    __七把刀__阅读 4,733评论 0 4
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,996评论 0 38
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,489评论 0 9
  • 我有一副 血红色眼镜 漆黑泛光的镜片 常沾满尘埃血丝 若不静心擦拭 怎能看清世界?
    青竹青涵阅读 248评论 2 5