zoukankan      html  css  js  c++  java
  • 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()的中断安全
    版本,专门用于中断服务例程中

  • 相关阅读:
    内存溢出和内存泄漏的区别
    java 23种设计模式 深入理解
    关于安装office注册表权限的解决方法
    Tomcat在Linux上的安装与配置
    初窥Linux 之 我最常用的20条命令
    redis使用初体验
    学习进度条——第12周
    找水王
    学习进度条——第11周
    学习进度条——第10周
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/7932260.html
Copyright © 2011-2022 走看看