- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
一、任务创建 1
二、任务控制4
三、内核控制10
11. vTaskStartScheduler10
12. vTaskEndSchedule 11
13. vTaskSuspendAll11
四、队列管理12
五、信号量26
六、联合程序33
一、任务创建
1. xTaskCreate
task. h
portBASE_TYPExTaskCreate(
pdTASK_CODE pvTaskCode,
const portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pvCreatedTask
);
创建新的任务并添加到任务队列中,准备运行
Parameters
pvTaskCode 指向任务的入口函数. 任务必须执行并且永不返回 (即:无限循环).
pcName 描述任务的名字。主要便于调试。最大长度由configMAX_TASK_NAME_LEN.
定义
usStackDepth 指定任务堆栈的大小 ,堆栈能保护变量的数目- 不是字节数. 例如,如果堆栈
为 16位宽度,usStackDepth定义为 100, 200 字节,这些将分配给堆栈。堆
栈嵌套深度 (堆栈宽度)不能超多最大值——包含了 size_t 类型的变量
pvParameters 指针用于作为一个参数传向创建的任务
uxPriority 任务运行时的优先级
pvCreatedTask 用于传递一个处理——引用创建的任务
返回 pdPASS 是如果任务成功创建并且添加到就绪列中,另外错误代码在 projdefs. H文件定
义
2. vTaskDelete
task. h
void vTaskDelete( xTaskHandle pxTask );
INCLUDE_vTaskDelete必须定义为 1,这个函数才能可用。查看配置部分获得更多信息。
从 RTOS实时内核管理中移除任务。要删除的任务将从就绪,封锁,挂起,事件列表中移除。
注意:空闲任务负责释放内核分配给已删除任务的内存。因此,如果应用程序调用了vTaskDelete
(),微控制器执行时间,空闲任务不假死是很重要的。内存分配给任务的代码不会自动释放,应
该在任务删除之前。
参数:
pxTask 处理要删除的任务。传递 NULL将引起调用任务删除
二、任务控制
3. vTaskDelay
task. h
void vTaskDelay( portTickType xTicksToDelay );
INCLUDE_vTaskDelay 必须设置为 1,这个函数才为可用。参考配置获得更多信息。
延时任务为已知时间片。任务被锁住剩余的实际时间由时间片率决定。portTICK_RATE_MS 常
量用来用来从时间片速率 (一片周期代表着分辨率)来计算实际时间。
vTaskDelay()指定一个任务希望的时间段,这个时间之后 (调用 vTaskDelay() )任务解锁。例
如,指定周期段为 100 时间片,将使任务在调用 vTaskDelay()100个时间片之后解锁。
vTaskDelay()不提供一个控制周期性任务频率的好方法,像通过代码采取的路径,和其他任务和
中断一样,在调用 vTaskDelay()后 影响频率,因此任务所需的时间下一次执行。
参考 vTaskDelayUntil() ,这个交替的API 函数设计了执行固定的频率。它是指定的一个绝对
时间 (而不是一个相对时间)后,调用任务解锁。
参数
xTicksToDelay 时间数量,调用任务应该锁住的时间片周期
4. vTaskDelayUntil
task. h
void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType
xTimeIncrement );
INCLUDE_vTaskDelayUntil 必须定义为 1,此函数才能用。参考配置获得更多信息。
延时一个任务到指定时间。这个函数用在循环任务以确保一定频率执行。这个函数在一个重要方
面上不同于 vTaskDelay(),vTaskDelay(
文档评论(0)