1. 建议在阅读之前下载FreeRTos源码配合阅读
2. 源码阅读确实特别枯燥无趣,可以配合硬件来学习,我购买的是乐鑫科技的ESP8266配合学习的,STM32的也是可以的,编译好固件之后烧录通过串口反馈信息可以验证你的程序
3. 推荐使用UBUNTU环境下进行编译,同时能锻炼你的linux使用能力与故障排查能力(莫名其妙很多warning和error,我已经要无了 = = )
本文基于《USING THE FREERTOS REAL TIME KERNEL》进行整理,感谢作者与翻译Zou Changjun
一、任务
1. 任务函数
void ATaskFunction( void *pvParameters );
FreeRTOS 任务不允许以任何方式从实现函数中返回——它们绝不能有一条==”return”==语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删除。
一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。
2. 创建任务
portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode,
const signed portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pxCreatedTask );
//示例
int main (void) {
xTaskCreate( vTask1, /* 指向任务函数的指针 */
"Task 1", /* 任务的文本名字,只会在调试中用到 */
1000,