FreeRTOS学习笔记(二)——系统多任务基础
系统多任务基础的知识框架
** 多任务调度机制**
中断的优先级>任务的优先级
问题:为什么有优先级数量参数?
答:优先级的数量跟内存的关系很大,同时优先级越多,逻辑关系越复杂,所需要的内存空间也越大。
多任务基础知识
任务特性
1.任务特性
(独立堆栈)任务在切换时,需要保存CPU的运行环境。
2.任务状态
就绪态:已经可以运行,等待调度器的切入;
运行态:正在占用CPU运行;
阻塞态:(任务的大部分时间都是处于阻塞态)等待某个事件的到来,定时或者同步;
挂起态:退出调度系统,调度器不可见,只能使用vTaskSuspend()挂起和vTaskResume()唤醒后进入就绪态。
3.任务优先级
任务的实现
1.任务的实现
2.任务控制块
任务控制块就是描述任务属性的结构体。
任务堆栈详解
1.任务控制块
2.堆栈的大小确定
任务创建应用
1.动态任务的创建
2.静态任务的创建
任务的挂起和恢复应用
1.任务的挂起
2.任务的恢复
任务创建和删除实现原理
任务控制块
任务创建原理深入
BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
const char * const pcName,
const configSTACK_DEPTH_TYPE usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask );
任务删除原理深入
void vTaskDelete( TaskHandle_t xTaskToDelete );
任务挂起和恢复实现原理
1.任务挂起原理深入
void vTaskSuspend( TaskHandle_t xTaskToSuspend );
2.任务恢复原理深入
void vTaskResume( TaskHandle_t xTaskToResume );