【FreeRTOS】使用指南1:任务管理
本章的目的是让读者充分了解:
在应用程序中,FreeRTOS 如何为各任务分配处理时间。
在任意给定时刻,FreeRTOS 如何选择任务投入运行。
任务优先级如何影响系统行为。
任务存在哪些状态。
此外,还期望能够让读者解:
如何实现一个任务。
如何创建一个或多个任务的实例。
如何使用任务参数。
如何改变一个已创建任务的优先级。
如何删除任务。
如何实现周期性处理。
空闲任务何时运行,可以用来干什么。
1.在应用程序中,FreeRTOS 如何为各任务分配处理时间。
一个称为心跳(tick,有些地方被称为时钟滴答,FreeRTOS称为时钟心跳)中断的周期性中断,调度器在每个时间片的结束时刻运行,决定下一个时间片运行的任务。
存在优先级高的就绪任务先执行,除非该任务阻塞或挂起
有多个优先级一样的就绪任务时,由任务调度器调度,交替执行
2.在任意给定时刻,FreeRTOS 如何选择任务投入运行。
优先级最高的就绪任务投入运行
同优先级轮流执行
3.任务优先级如何影响系统行为。
优先级高先运行,优先级高可以抢占低优先级任务运行
4.任务存在哪些状态。
1.如何实现一个任务。
(1).写好任务函数
(2).使用xTaskCreate() 函数创建任务,把写好的任务函数传进去
(3).使用vTaskStartScheduler()启动任务调度
2.如何创建一个或多个任务的实例。
3.如何使用任务参数。
4.如何改变一个已创建任务的优先级。
vTaskPrioritySet()
5.如何删除任务。
vTaskDelete()
6.如何实现周期性处理。
vTaskDelayUntil()
7.空闲任务何时运行,可以用来干什么。
当调用 vTaskStartScheduler()时,调度器会自动创建一个空闲任务。
空闲任务负责回收内核资源,用户也可以在其钩子函数中实现自己的功能。