1.什么是任务?
任务可以理解为进程/线程,创建一个任务,机会在内存开辟一个空间。
2.任务的创建与删除
xTaskCreate的原型:
BaseType_t xTaskCreate(
TaskFunction_t pxTaskCode, //任务函数
const char * const pcName, //任务名
const uint16_t usStackDepth, //任务堆栈大小
void * const pvParameters, //传递给任务函数的参数
UBaseType_t uxPriority, //任务优先级
TaskHandle_t * const pxCreatedTask //任务句柄/控制块
)
3.创建任务实操(HAL库)
(1)选中任务与队列
(2)创建任务->点击Add
任务优先级(从上到下依次递增)低 -> 高
如图,创建两个LED任务
(3)配置GPIO
(4)keil文件
a.任务相关信息
b.任务执行内容
4.创建任务实操(库函数)-动态创建
函数:xTaskCreate()和vTaskDelete()的使用
动态任务创建流程:
(1)FreeRTOS入口函数(类似于main函数)
a.创建start_task,配置相关的宏
编写start_task 的执行内容函数,创建任务1,2,3(此处省略任务1,2,3的宏配置)
编写任务1,2,3的执行函数
补充:临界区保护,保护不想被打断的任务/程序段
TaskENTER_CRITICAL();//进入临界区
TaskEXIT_CRITICAL();//退出临界区