任务通知简介
任务通知在 freertos 中是一个可选的功能,要使用任务通知的话就需要将宏configuse_task_notifications 定义为 1。
freertos 的每个任务都有一个 32 位的通知值,任务控制块中的成员变量 ulnotifiedvalue 就是这个通知值。任务通知是一个事件,假如某个任务通知的接收任务因为等待任务通知而阻塞的话,向这个接收任务发送任务通知以后就会解除这个任务的阻塞状态。也可以更新接收任务的任务通知值,任务通知可以通过如下方法更新接收任务的通知值:
● 不覆盖接收任务的通知值(如果上次发送给接收任务的通知还没被处理)。
● 覆盖接收任务的通知值。
● 更新接收任务通知值的一个或多个 bit。
● 增加接收任务的通知值。
合理、灵活的使用上面这些更改任务通知值的方法可以在一些场合中替代队列、二值信号量、计数型信号量和事件标志组。使用任务通知来实现二值信号量功能的时候,解除任务阻塞的时间比直接使用二值信号量要快 45%(freertos 官方测试结果,使用 v8.1.2 版本中的二值信号量,gcc 编译器,-o2 优化的条件下测试的,没有使能断言函数 configassert()),并且使用的 ram 更少!
任务通知的发送使用函数 xtasknotify()或者 xtasknotifygive()(还有此函数的中断版本)来 完 成 , 这个通知值会一直保持着 ,直到接受任务调用函数xtasknotifywait() 或 者ultasknotifytake()来获取这个通知值。假如接收任务因为等待任务通知而阻塞的话那么在接收到任务通知以后就会解除阻塞态。
任务通知虽然可以提高速度,并且减少 ram 的使用,但是任务通知也是有使用限制的:
● freertos 的任务通知只能有一个接收任务,其实大多数的应用都是这种情况。
● 接收任务可以因为接收任务通知而进入阻塞态,但是发送任务不会因为任务通知发送失败而阻塞。
新思科技与Ansys联合开发的电压时序签核解决方案获三星采用
电动汽车电池内阻测试解决方案
iPhone 12S可能会出现屏下指纹版本?
五个“小”物联网安全风险比你想象的还要大
安卓以后就不卡了?安卓可能会闭源
FreeRTOS任务通知简介
电流速断保护和过电流保护的区别
福能东方半年与孚能科技签署4.03亿元的日常经营合同
混频器的工作原理、种类和结构组成分析
适用于应用系统的单片机选型原则分析
关于Vishay DG增强模拟开关IC性能分析
德州仪器发布低功耗 60GHz 毫米波雷达传感器
衍射光栅的核心应用(三)
汽车油泥对比检测高铁车头手持式3D激光扫描仪大型模具机械携式
中国首颗物联网核心芯片“唐芯一号”诞生
IEEE被曝光邮件实锤,都是为了华为好?
USB Type-C端口充电解决方案
尼康D5相机,拥有2082万的有效像素,并支持自动FP高速同步
半数字系统与全数字系统区别
传统制造业企业要推行智能制造必须要有针对性的进行改善