任务
- FreeRTOS 中的任务是抢占式调度机制,高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。
- 不在运行的任务必须删除,否则将产生hardfault错误
- 同时 FreeRTOS 也支持时间片轮转调度方式,只不过时间片的调度是不允许抢占任务的 CPU 使用权。
- 除了中断处理函数、调度器上锁部分的代码和禁止中断的代码是不可抢占的之外系统的其他部分都是可以抢占的
- 0 为最低优先级,分配给空闲任务使用,一般不建议用户来使用这个优先级,一般设置32个优先级
- FreeRTOS 内核中也允许创建相同优先级的任务。相同优先级的任务采用时间片轮转方式进行调度(也就是通常说的分时调度器),时间片轮转调度仅在当前系统中无更高优先级就绪任务存在的情况下才有效
任务状态
- 阻塞状态(Blocked)
- 暂停状态(Suspended)
- 就绪状态(Ready)
在阻塞状态的任务,它可以等待两种类型的事件,第一类是时间相关的时间,第二类是同步类事件