RTOS官方文档学习

发布时间 2023-08-23 15:57:51作者: __Zed

任务与协程

区别

一个程序可以只有任务、只有协程、二者都有,但不可以通过队列/信号量互相传递数据

任务特点

  1. 任务之间可以互相独立

  2. 每个任务分配自己的堆栈,提高了RAM使用率

  3. 操作简单、按优先级抢占式执行

  4. 抢占容易导致重入(执行任务时被其他线程或进程调用了)

协程特点

  1. 一般用于小型,RAM有限制的处理器上

  2. 所有协程共用一个堆栈

  3. 通过一组宏实现的

  4. 减少了重入问题,但是和任务混用总抢不过人家

任务状态

运行、就绪、阻塞、挂起

任务优先级

  1. 0--configMAX_PRIORITIES - 1,最大值定义在FreeRTOSConfig.h中

  2. 设置的越小越好,某些特殊情况不得超过32

  3. 空闲任务优先级为0

  4. 默认情况,相同优先级按时间切片轮流运行

任务调度

  1. 抢占式调度,即使在同一时间片,ISR更改了一个高优先级任务,也会打断当前的低优先级任务。

  2. 时间片指两个tick中断之间的时间,相同优先级的任务,一人一个时间片依次执行。

  3. 高优先级任务处于“阻塞”状态时, 低优先级任务会运行。