野火freertos内核实现与应用开发实战指南3课件第20节_第1页
野火freertos内核实现与应用开发实战指南3课件第20节_第2页
野火freertos内核实现与应用开发实战指南3课件第20节_第3页
野火freertos内核实现与应用开发实战指南3课件第20节_第4页
野火freertos内核实现与应用开发实战指南3课件第20节_第5页
已阅读5页,还剩12页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务通知FreeRTOS内核实现与应用开发实战指南淘宝:论坛:扫描进入淘宝店铺01任务通知的基本概念02任务通知的运作机制03任务通知的实现参考资料:《FreeRTOS内核实现与应用开发实战指南》主讲内容任务通知的基本概念FreeRTOS从V8.2.0版本开始提供任务通知每个任务都有一个32位的通知值。发送通知给任务,如果有通知未读,不覆盖通知值。发送通知给任务,直接覆盖通知值。发送通知给任务,设置通知值的一个或者多个位,可以当做事件组来使用。发送通知给任务,递增通知值,可以当做计数信号量使用。只能有一个任务接收通知消息。只有等待通知的任务可以被阻塞。任务通知的运作机制无需创建。中断/任务均能发送通知只有在任务中可以等待通知,而不允许在中断中等待通知任务通知的数据结构#if(configUSE_TASK_NOTIFICATIONS==1)

volatileuint32_tulNotifiedValue; volatileuint8_tucNotifyState; #endif任务通知的实现xTaskNotifyGive()xTaskGenericNotify()发送通知,没有通知值(信号量类型)xTaskNotify()发送通知,带通知值发送通知,带通知值,并且返回原通知值xTaskNotifyAndQuery()ulTaskNotifyTake()

等待通知(信号量类型)xTaskNotifyWait()等待通知vTaskNotifyGiveFromISR()xTaskNotifyGive()的中断版本xTaskNotifyAndQueryFromISR()xTaskGenericNotifyFromISR()xTaskNotifyAndQuery()中断版本ulTaskNotifyTake()的中断版本xTaskNotifyFromISR()xTaskNotifyStateClear()清除所有未读消息xTaskGenericNotifyBaseType_txTaskGenericNotify(TaskHandle_txTaskToNotify, uint32_tulValue, eNotifyActioneAction, uint32_t*pulPreviousNotificationValue)参数:xTaskToNotify:

任务句柄ulValue:

通知值eAction:

更新通知的方式pulPreviousNotificationValue:

任务原本的通知值xTaskNotifyGive发送通知,没有通知值(信号量类型)#define xTaskNotifyGive(xTaskToNotify) xTaskGenericNotify((xTaskToNotify),(0),eIncrement,NULL)xTaskNotify发送通知,带通知值#define xTaskNotify(xTaskToNotify, \ ulValue, \eAction) \ xTaskGenericNotify((xTaskToNotify), \ (ulValue), \ (eAction), \

NULL) \xTaskNotifyAndQuery()发送通知,带通知值,并且返回原通知值#define xTaskNotifyAndQuery(xTaskToNotify, \ ulValue, \ eAction, \ pulPreviousNotifyValue) \ xTaskGenericNotify((xTaskToNotify), \ (ulValue), \ (eAction), \ (pulPreviousNotifyValue))ulTaskNotifyTake()获取任务通知值uint32_tulTaskNotifyTake(BaseType_txClearCountOnExit, TickType_txTicksToWait)参数:ulBitsToClearOnExit:

退出函数的时候清除任务通知位xTicksToWait:

阻塞时间xTaskNotifyWait()获取任务通知BaseType_txTaskNotifyWait(uint32_tulBitsToClearOnEntry, uint32_tulBitsToClearOnExit, uint32_t*pulNotificationValue, TickType_txTicksToWait)参数:ulBitsToClearOnEntry:

进入函数的时候清除任务通知位ulBitsToClearOnExit:

退出函数的时候清除任务通知位pulNotificationValue:

用来保存任务通知值xTicksToWait:

阻塞时间xTaskGenericNotifyFromISR()在中断中向一个任务发送任务通知(通用类型)。BaseType_txTaskGenericNotifyFromISR(TaskHandle_txTaskToNotify, uint32_tulValue, eNotifyActioneAction, uint32_t*pulPreviousNotificationValue, BaseType_t*pxHigherPriorityTaskWoken)参数:xTaskToNotify:

任务句柄ulValue:

更新接收任务通知值

eAction:

任务通知值更新方式pulPreviousNotificationValue: 保存任务上一个通知值pxHigherPriorityTaskWoken:

是否在中断退出前切换任务

xTaskNotifyAndQueryFromISR()在中断中发送一个任务通知,并返回对象任务的上一个通知值。#definexTaskNotifyAndQueryFromISR(xTaskToNotify, ulValue, eAction, pulPreviousNotificationValue, pxHigherPriorityTaskWoken) xTaskGenericNotifyFromISR((xTaskToNotify), (ulValue), (eAction), pulPreviousNotificationValue, (pxHigherPriorityTaskWoken))xTaskNotifyFromISR()在中断中发送一个通知,带通知值的。#define xTaskNotifyFromISR(xTaskToNotify,ulValue, eAction, pxHigherPriorityTaskWoken) xTaskGenericNotifyFromISR((xTaskToNotify), (ulValue), (eAction),

NULL, (pxHigherPriorityTaskWoken))vTaskNotifyGiveFromISR()vTaskNo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论