FreeRTOS学习笔记(二)——系统多任务基础

系统多任务基础的知识框架

FreeRTOS学习笔记(二)——系统多任务基础

** 多任务调度机制**
FreeRTOS学习笔记(二)——系统多任务基础
中断的优先级>任务的优先级
问题:为什么有优先级数量参数?
答:优先级的数量跟内存的关系很大,同时优先级越多,逻辑关系越复杂,所需要的内存空间也越大。

多任务基础知识

任务特性

1.任务特性

FreeRTOS学习笔记(二)——系统多任务基础
(独立堆栈)任务在切换时,需要保存CPU的运行环境。

2.任务状态

FreeRTOS学习笔记(二)——系统多任务基础
 就绪态:已经可以运行,等待调度器的切入;
 运行态:正在占用CPU运行;
 阻塞态:(任务的大部分时间都是处于阻塞态)等待某个事件的到来,定时或者同步;
 挂起态:退出调度系统,调度器不可见,只能使用vTaskSuspend()挂起和vTaskResume()唤醒后进入就绪态。

3.任务优先级

FreeRTOS学习笔记(二)——系统多任务基础

任务的实现

1.任务的实现

FreeRTOS学习笔记(二)——系统多任务基础

2.任务控制块

FreeRTOS学习笔记(二)——系统多任务基础
任务控制块就是描述任务属性的结构体。

任务堆栈详解

1.任务控制块

FreeRTOS学习笔记(二)——系统多任务基础

2.堆栈的大小确定FreeRTOS学习笔记(二)——系统多任务基础

任务创建应用

1.动态任务的创建

FreeRTOS学习笔记(二)——系统多任务基础

2.静态任务的创建

FreeRTOS学习笔记(二)——系统多任务基础

任务的挂起和恢复应用

1.任务的挂起

FreeRTOS学习笔记(二)——系统多任务基础

2.任务的恢复

FreeRTOS学习笔记(二)——系统多任务基础

任务创建和删除实现原理

任务控制块

FreeRTOS学习笔记(二)——系统多任务基础

任务创建原理深入

FreeRTOS学习笔记(二)——系统多任务基础

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 );

任务删除原理深入

FreeRTOS学习笔记(二)——系统多任务基础
void vTaskDelete( TaskHandle_t xTaskToDelete );

任务挂起和恢复实现原理

1.任务挂起原理深入

FreeRTOS学习笔记(二)——系统多任务基础
void vTaskSuspend( TaskHandle_t xTaskToSuspend );

2.任务恢复原理深入

FreeRTOS学习笔记(二)——系统多任务基础
void vTaskResume( TaskHandle_t xTaskToResume );

任务相关API总结

FreeRTOS学习笔记(二)——系统多任务基础