FreeRTOS学习笔记

FreeRTOS学习笔记

使用注意:FreeRTOS与ucOS相比,需要修改启动文件。

1. 任务创建

包含FreeRTOS.h //这个是必须要包含的// 和task.h。 调用API函数:xTaskCreate

pvTaskCode:函数指针(函数名)。

pcName:描述性任务名,只是用于辅助调试。可以通过

FreeRTOSConfig.h第100行的

configMAX_TASK_NAME_LEN来改变描述名长度。

usStackDepth:任务栈大小。建议为64的整数倍。 pvParameters:任务参数,void * 类型。不用写NULL。 uxPriority:任务优先级。值越大优先级越高。同等优先级时,

按照os heart进行时间片轮转。

xTaskHandle:任务句柄。改变该任务优先级、删除任务等时才会

2. 开始多任务 vTaskStartScheduler()

用到。不用写NULL。

3. 如何多任务切换

调用API函数:vTaskDelay(unsigned int time) Time为多少个os heart。

4. 时间片轮转例子 创建两个任务

xTaskCreate(USART1_Task, \

xTaskCreate(USART2_Task, \

相同优先级,波特率可以设置低一些。

然后就会看到这就是时间片轮转。

5. 系统心跳频率

在FreeRTOSConfig.h第97行的configTICK_RATE_HZ,源码使用1000HZ,就是1ms,如果为200就是200HZ,5ms。 相关宏:portTICK_RATE_MS。

6. vTaskDelayUntil

和vTaskDelay不同,这个函数不包括函数运行时间,而

vTaskDelayUntil包括。

比如,一个函数A执行时间为2ms,

使用vTaskDelay(10),则再次执行这个函数最少需要等待12ms。 使用vTaskDelayUntil(10),则这2ms包括在内,A以固定10ms周期运行。

使用方法:

红圈的地方就是固定心跳周期。

7. 空闲任务钩子函数

void vApplicationIdleHook(void) {}

需使能FreeRTOSConfig.h中第126行的configUSE_IDLE_HOOK。

8. 消息队列---Queue 包含:#include \

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4