• freeRTOS中文实用教程3--中断管理之中断服务例程中使用队列


    1.前言

     消息队列不仅可以用于事件通信,还可以用来传递数据

    2.实例说明消息队列的执行过程

    3.主要API

    API名称 说明 参数 返回值
    xQueueSendFromISR()完全等同于 xQueueSendToBackFromISR()
     

    xQueue

    目标队列的句柄。这个句柄即是调用 xQueueCreate()
    创建该队列时的返回值。


    pvItemToQueue

    发送数据的指针。其指向将要复制到目标队列中的数据
    单元。由于在创建队列时设置了队列中数据单元的长度,所以会从该指针指向的空间复制对应长度的数据到队列的
    存储区域。

    pxHigherPriorityTaskWoken 对某个队列而言,可能有不止一个任务处于阻塞态在等待其数据有效。调用 xQueueSendToFrontFromISR()xQueueSendToBackFromISR()会使得队列数据变为有效,所以会让其中一个等待任务切出阻塞态。如果调用这两个 API 函数使得一个任务解除阻塞,并且这个任务的优先级高于当前任务(也就是被中断的任务),那
    API 会在函数内部将*pxHigherPriorityTaskWoken
    pdTRUE。如果这两个 API 函数将此值设为 pdTRUE,则在中断退
    出前应当进行一次上下文切换。这样才能保证中断直接
    返回到就绪态任务中优先级最高的任务中。


    1. pdPASS
    返回 pdPASS 只会有一种情况, 那就是数据被成功发送
    到队列中。


    2. errQUEUE_FULL
    如 果 由 于 队 列 已 满 而 无 法 将 数 据 写 入 , 则 将 返 回
    errQUEUE_FULL

    xQueueReceiveFromISR()
         

    注:xQueueSendToFrontFromISR()xQueueSendToBackFromISR()xQueueReceiveFromISR()
    分别是 xQueueSendToFront()xQueueSendToBack()xQueueReceive()的中断安全
    版本,专门用于中断服务例程中

  • 相关阅读:
    Linux C 编程内存泄露检測工具(二):memwatch
    远程视频监控之驱动篇(按键)
    MATLAB——scatter的简单应用
    【收藏】十大Webserver漏洞扫描工具
    托付和观察者模式
    wireshark过滤语法总结
    2014年度辛星解读css第四节
    unity3D游戏开发十八之NGUI动画
    谈到本场比赛的项目经理
    jsp的原则执行
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/7932260.html
Copyright © 2020-2023  润新知