赞
踩
目录
在STM32裸机开发中,我们存在一个main函数,所有代码在main函数中执行。类似的我们在FreeRTOS中也有这样的概念,创建一个函数,这个函数就像是main函数一样有着一直在函数中执行,无限循环且不退出的功能。
此处栈为单片机RAM中一段连续的内存空间,其大小可以自行分配,为了给每个任务提供一个运行空间
在裸机开发中,程序按顺序执行,FreeRTOS则可以灵活地调度任务,这就需要给每个任务一个标识,通过任务控制块,系统可以更灵活的控制任务执行。
(1)(5)用来检测列表的完整性,开启相关宏后开启
(2)记录列表项的数量
(3)记录列表的索引号
(4)指定列表中最后一个列表项,标识列表结束
是存放在列表中的项目(列表项和mini列表项)
(2)列表项的值
(3)指向下一个列表项
(4)指向前一个列表项
(5)列表项的所有者(通常是任务控制块)
(6)列表项所属列表
(2)值
(3)指向下一个
(4)指向上一个
(1)pxIndex标识列表索引号 xListEnd标识列表末尾
(2)对于末尾列表项的初始化
(3)用来指向下一个列表项
(4)用来指向上一个列表项
(6)用于完整性检测
(7)用于完整性检测
给列表项赋值
插入后形成一个环形的结构
如果不是动态分配内存,删除后内存不会释放
(1)条件编译,当宏设置为1时才编译此块,设置为支持静态内存任务创建
(2)指向任务的空指针(任务入口)
(3)任务名称
(4)任务堆栈大小
(5)传递给任务函数的参数
(6)任务优先级(抢占式优先级)
(7)任务栈起始地址
(8)任务控制块指针
(1)指向任务的空指针(任务入口)
(2)任务名称
(3)任务堆栈大小
(4)传递给任务函数的参数
(5)任务优先级(抢占式优先级)
(6)任务句柄
(7)任务控制块指针
重点在xTaskCreateStatic()函数的调用和使用
从就绪列表中找到优先级最高的任务执行
注意在FreeRTOSConfig.h中设置支持静态内存
空闲任务和定时器任务的相关定义在FreeRTOSConfig.h中
在静态方法中定时器任务和空闲任务都需我们自己手动分配
与静态方法相比动态方法的堆栈大小是自动分配的
注意在FreeRTOSConfig.h中设置不支持静态内存】
tips:FreeRTOS中内置官方延时函数vTaskDelay();会实现任务的的调度,自己定义的delay函数则不会实现任务的调度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。