freertos 通知总结

注意 使用通知相比较 信号量 队列 不用创建省下了很多工夫,省下空间
每一个任务都有一个32的信号值,当创建的时候,这个值被初始化为0

1 configUSE_TASK_NOTIFICATIONS 设置为1
2 在控制块上有这个成员变量
3 接受任务因为任务通知而进入阻塞状态,但是发送任务不会因为任务通知发送 失败 而阻塞
4 xTaskNotify() 或者 xTaskNotifyGive() 发送通知里面没有阻塞
5 xTaskNotifyWait() 或者 xTaskNotifyTask()里面有阻塞

6 xTaskNotifyGive() 一个参数 给哪一个任务发送通知 对通知值简单的加一 (也就是发送一个通知值为0的通知)

7 xTaskNotify() 三个参数 第一个参数(哪个任务) 第二个参数 通知值 第三个参数 动作类型 : xTaskNotifyGive() 也有类型,类型就是默认加一

8 xTaskNotifyAndQuery 四个参数 对比 xTaskNotify()多了一个参数 指向 上一次的通知值

9 xTaskNotifyTask() 参数1 pdFALSE 执行完这个函数后通知值减一 pdTRUE退出函数的时候任务值清零
参数2 阻塞时间
返回值 函数完成前,那个通知值

10 模仿二值信号量完成 模拟通知 的功能
一般使用 xTaskNotifyGive() 给一个任务句柄发送一个通知 任务句柄就是 xTaskCreate 的最后一个参数
ulTaskNotifyTake用来接收

		NotifyValue=ulTaskNotifyTake(pdTRUE,portMAX_DELAY);	//获取任务通知
		if(NotifyValue==1)									//清零之前的任务通知值为1,说明任务通知有效
		{
		}

portMAX_DELAY 阻塞时间 死等 死等 死等 死等

11 模仿计数型信号量
xTaskNotifyGive(句柄)
NotifyValue=ulTaskNotifyTake(pdFALSE,portMAX_DELAY)
它每次清除一次,可以清除次数跟添加次数是相等的
那么对比 模仿二值信号量 它的确很讲理性,所以是计数型吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值