FreeRTOS基础知识
FreeRTOS基础知识文章目录FreeRTOS基础知识一、任务调度简介(熟悉)1.什么是任务调度器2、FreeRTOS的任务调度方式3、抢占式调度过程4、时间片调度过程二、任务状态( 熟悉)1、FreeRTOS的任务状态2、四种任务状态之间的转换关系3、任务状态列表一、任务调度简介(熟悉)1.什么是任务调度器任务调度器就是使用相关的调度算法来决定当前需要执行的哪个任务。2、FreeRTOS的任务调度方式FreeRTOS一共支持三种任务调度方式抢占式调度主要是针对优先级不同的任务每一个任务都有一个任务优先级优先级高的任务可以抢占低优先级的任务的CPU使用权。时间片调度主要针对相同优先级的任务当多个任务的优先级相同时任务调度器会在每个时钟节拍到来的时候切换任务。协程式调度 其实就是轮询当前执行任务将会一直运行同时高优先级的任务不会抢占低优先级任务。FreeRTOS现在虽然还在支持但官方已经明确表示不再更新协程式调度。重点掌握前两种3、抢占式调度过程总结1.高优先级任务优先执行。2.高优先级任务不停止低优先级任务无法执行。3.被抢占的任务将会进去就绪态。4、时间片调度过程总结同等优先级任务轮流享有相同的CPU时间(可设置)叫做时间片在FreeRTOS中一个时间片等于SysTick中断周期。1.同等优先级任务轮流执行。2.一个时间片大小取决滴答定时器中断周期。3.没有用完的时间片不会再使用任务Task3下次得到执行时间还是按照一个时间片的时钟节拍运行。二、任务状态( 熟悉)1、FreeRTOS的任务状态FreeRTOS中任务存在4种状态1.运行态 正在执行的任务该任务就处于运行状态(注在STM32中同一时间仅一个任务处于运行态)。2.就绪态 如果该任务已经能够被执行但当前还未被执行那么该任务处于就绪态。3.阻塞态 如果一个任务因为延时或者等待外部事件发生那么这个任务就处于阻塞态。4.挂起态 类似于暂停调用函数vTaskSuspend()进入挂起态需要调用解挂函数vTaskResume()才可以进入就绪态。2、四种任务状态之间的转换关系总结1.仅就绪态可以转换成运行态。2.其他状态的任务想要运行必须先转换成就绪态。3、任务状态列表答任务的四种状态中除了运行态其他三种任务状态的任务都有其对应的任务状态列表。就绪列表 pxReadyTasksLists[x]其中x代表任务优先级数值。阻塞列表 pxDelayedTaskList挂起列表 xSuspendedTaskList