CMSIS-RTOS2 文档翻译 之 参考(RTX5 特定的 API 之 事件功能(消息队列函数))

消息队列函数

事件功能

消息队列函数生成的事件。更多...

函数

void EvrRtxMessageQueueError (osMessageQueueId_t mq_id, int32_t status)
 消息队列错误事件(错误)更多...
 
void EvrRtxMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)
 消息队列创建和初始化(API)上的事件 更多...
 
void EvrRtxMessageQueueCreated (osMessageQueueId_t mq_id, const char *name)
 成功消息队列创建事件(Op)更多...
 
void EvrRtxMessageQueueGetName (osMessageQueueId_t mq_id, const char *name)
 消息队列名称检索(API)上的事件 更多...
 
void EvrRtxMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)
 消息放置事件(API)更多...
 
void EvrRtxMessageQueuePutPending (osMessageQueueId_t mq_id, const void *msg_ptr, uint32_t timeout)
 未决消息上的事件(Op)更多...
 
void EvrRtxMessageQueuePutTimeout (osMessageQueueId_t mq_id)
 消息放置超时事件(Op)更多...
 
void EvrRtxMessageQueueInsertPending (osMessageQueueId_t mq_id, const void *msg_ptr)
 待处理消息插入事件(Op)更多...
 
void EvrRtxMessageQueueInserted (osMessageQueueId_t mq_id, const void *msg_ptr)
 成功留言插入事件(Op)更多...
 
void EvrRtxMessageQueueNotInserted (osMessageQueueId_t mq_id, const void *msg_ptr)
 不成功的消息插入事件(Op)更多...
 
void EvrRtxMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)
 消息获取事件(API)更多...
 
void EvrRtxMessageQueueGetPending (osMessageQueueId_t mq_id, void *msg_ptr, uint32_t timeout)
 待处理消息获取事件(Op)更多...
 
void EvrRtxMessageQueueGetTimeout (osMessageQueueId_t mq_id)
 消息上的事件超时(Op)更多...
 
void EvrRtxMessageQueueRetrieved (osMessageQueueId_t mq_id, void *msg_ptr)
 成功留言的活动(Op)更多...
 
void EvrRtxMessageQueueNotRetrieved (osMessageQueueId_t mq_id, void *msg_ptr)
 不成功的消息获取事件(Op)更多...
 
void EvrRtxMessageQueueGetCapacity (osMessageQueueId_t mq_id, uint32_t capacity)
 消息队列容量检索事件(API)更多...
 
void EvrRtxMessageQueueGetMsgSize (osMessageQueueId_t mq_id, uint32_t msg_size)
 消息队列消息大小检索(API)上的事件 更多...
 
void EvrRtxMessageQueueGetCount (osMessageQueueId_t mq_id, uint32_t count)
 消息队列消息计数检索(API)上的事件 更多...
 
void EvrRtxMessageQueueGetSpace (osMessageQueueId_t mq_id, uint32_t space)
 消息队列消息槽检索事件(API)更多...
 
void EvrRtxMessageQueueReset (osMessageQueueId_t mq_id)
 消息队列休息(API)上的事件 更多...
 
void EvrRtxMessageQueueResetDone (osMessageQueueId_t mq_id)
 成功消息队列重置(Op)的事件 更多...
 
void EvrRtxMessageQueueDelete (osMessageQueueId_t mq_id)
 消息队列删除事件(API)更多...
 
void EvrRtxMessageQueueDestroyed (osMessageQueueId_t mq_id)
 成功消息队列删除事件(Op)更多...
 

 

描述

函数文档

void EvrRtxMessageQueueError(osMessageQueueId_t mq_id,
  int32_t status 
 )  

参数

[in]mq_id消息队列 ID 由 osMessageQueueNew 获取,或者当 ID 未知时为 NULL。
[in]status扩展执行状态。

当消息队列例程由于错误而完成执行时,将生成事件 MessageQueueError

status 参数指示执行状态,可以是 osStatus_t 代码之一,也可以是下表中汇总的扩展执行状态代码之一。

扩展状态代码描述
osRtxErrorKernelNotReady内核调度程序未处于就绪状态。
osRtxErrorKernelNotRunning内核调度程序没有执行 - 没有正在运行的线程。
osRtxErrorInvalidControlBlock指定了具有无效对齐或大小的对象控制块。
osRtxErrorInvalidDataMemory指定了无效对齐或大小的对象数据存储器。
osRtxErrorInvalidThreadStack指定了无效对齐或大小的线程堆栈内存。
osRtxErrorInvalidPriority指定了无效的线程优先级。
osRtxErrorThreadNotJoinable指定的线程不可连接。
osRtxErrorMutexNotOwned指定的互斥锁不归当前运行的线程所有。
osRtxErrorMutexNotLocked指定的互斥锁未锁定。
osRtxErrorMutexLockLimit达到的最大递归互斥锁数。
osRtxErrorSemaphoreCountLimit达到了信号量计数限制。
osRtxErrorTZ_InitContext_S安全上下文内存系统初始化失败
osRtxErrorTZ_AllocContext_S安全上下文内存分配失败。
osRtxErrorTZ_FreeContext_S安全上下文内存释放失败。
osRtxErrorTZ_LoadContext_S安全上下文加载失败。
osRtxErrorTZ_SaveContext_S安全上下文保存失败。

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • status : 执行状态代码。

 

void EvrRtxMessageQueueNew(uint32_t msg_count,
  uint32_t msg_size,
  const osMessageQueueAttr_tattr 
 )  

参数

[in]msg_count队列中的最大消息数。
[in]msg_size最大消息大小(字节)。
[in]attr消息队列属性; NULL:默认值。

调用函数 osMessageQueueNew 时会生成事件 MessageQueueNew

事件记录器中的值显示:

  • msg_count : 队列中的最大消息数。
  • msg_size : 最大消息大小(字节)。
  • attr : 消息队列属性的内存地址,如果未指定,则为 0。

如果在 API 调用中提供了消息队列属性,则它们也会在事件记录器中详细说明。

 

void EvrRtxMessageQueueCreated(osMessageQueueId_t mq_id,
  const char * name 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]name指向消息队列对象名称的指针。

当函数 osMessageQueueNew 成功创建消息队列对象时,将生成事件 MessageQueueCreated

事件记录器中的值显示:

  • mq_id : 消息队列 ID。

 

void EvrRtxMessageQueueGetName(osMessageQueueId_t mq_id,
  const char * name 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]name指向消息队列对象名称的指针。

调用函数 osMessageQueueGetName 并且其执行结果已知时,将生成事件 MessageQueueGetName

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • name : 检索名称字符串的内存地址(如果发生故障,则为 0)。

 

void EvrRtxMessageQueuePut(osMessageQueueId_t mq_id,
  const void * msg_ptr,
  uint8_t msg_prio,
  uint32_t timeout 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,消息放入队列。
[in]msg_prio消息优先级。
[in]timeout超时值,如果没有超时,则为 0。

调用函数 osMessageQueuePut 时会生成事件 MessageQueuePut。

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。
  • msg_prio : 消息优先级。
  • timeout : 超时值。

 

void EvrRtxMessageQueuePutPending(osMessageQueueId_t mq_id,
  const void * msg_ptr,
  uint32_t timeout 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,消息放入队列。
[in]timeout超时值,如果没有超时,则为 0。

函数 osMessageQueuePut 开始等待将消息放入队列时生成事件 MessageQueuePutPending

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。
  • timeout : 超时值。

 

void EvrRtxMessageQueuePutTimeout(osMessageQueueId_t mq_id) 

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。

当函数 osMessageQueuePut 无法将消息插入队列直到超时到期时,将生成事件 MessageQueuePutTimeout

事件记录器中的值显示:

  • mq_id : 消息队列 ID。

 

void EvrRtxMessageQueueInsertPending(osMessageQueueId_t mq_id,
  const void * msg_ptr 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,消息放入队列。

当从 ISR 调用函数 osMessageQueuePut 并且注册消息以将其放入队列时,生成事件 MessageQueueInsertPending

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。

 

void EvrRtxMessageQueueInserted(osMessageQueueId_t mq_id,
  const void * msg_ptr 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,消息放入队列。

消息成功插入队列时会生成 MessageQueueInserted 事件。

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。

 

void EvrRtxMessageQueueNotInserted(osMessageQueueId_t mq_id,
  const void * msg_ptr 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,消息放入队列。

当函数 osMessageQueuePut 无法将消息插入队列时,将生成事件 MessageQueueNotInserted。通常,当队列内存不足时会发生这种情况。

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。

 

void EvrRtxMessageQueueGet(osMessageQueueId_t mq_id,
  void * msg_ptr,
  uint8_t * msg_prio,
  uint32_t timeout 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,用于从队列中获取消息。
[in]msg_prio消息优先级。
[in]timeout超时值,如果没有超时,则为 0。

调用函数 osMessageQueueGet 时会生成事件 MessageQueueGet

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。
  • msg_prio : 消息优先级缓冲区的内存地址。
  • timeout : 超时值。

 

void EvrRtxMessageQueueGetPending(osMessageQueueId_t mq_id,
  void * msg_ptr,
  uint32_t timeout 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,用于从队列中获取消息。
[in]timeout超时值,如果没有超时,则为 0。

当函数 osMessageQueueGet 开始等待从队列中检索消息时,将生成事件 MessageQueueGetPending

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。
  • timeout : 超时值。

 

void EvrRtxMessageQueueGetTimeout(osMessageQueueId_t mq_id) 

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。

调用函数 osMessageQueueGet 时会生成事件 MessageQueueGetTimeout,并且在超时到期之前队列中没有可用消息。

事件记录器中的值显示:

  • mq_id : 消息队列 ID。

 

void EvrRtxMessageQueueRetrieved(osMessageQueueId_t mq_id,
  void * msg_ptr 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,用于从队列中获取消息。

从消息队列中检索消息时生成事件 MessageQueueRetrieved

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。

 

void EvrRtxMessageQueueNotRetrieved(osMessageQueueId_t mq_id,
  void * msg_ptr 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_ptr指向缓冲区的指针,用于从队列中获取消息。

在没有等待超时的情况下调用函数 osMessageQueueGet 并且队列中没有可用消息时,将生成事件 MessageQueueNotRetrieved

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_ptr : 消息缓冲区的内存地址。

 

void EvrRtxMessageQueueGetCapacity(osMessageQueueId_t mq_id,
  uint32_t capacity 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]capacity最大消息数。

调用函数 osMessageQueueGetCapacity 并且其执行结果已知时,将生成事件 MessageQueueGetCapacity

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • capacity : 检索到的最大消息数(如果发生故障,则为 0)。

 

void EvrRtxMessageQueueGetMsgSize(osMessageQueueId_t mq_id,
  uint32_t msg_size 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]msg_size最大消息大小(字节)。

调用函数 osMessageQueueGetMsgSize 并且其执行结果已知时,将生成事件 MessageQueueGetMsgSize

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • msg_size : 检索的最大消息大小(以字节为单位)(如果发生故障,则为 0)。

 

void EvrRtxMessageQueueGetCount(osMessageQueueId_t mq_id,
  uint32_t count 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]count排队的消息数量。

调用函数 osMessageQueueGetCount 并且其执行结果已知时,将生成事件 MessageQueueGetCount

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • count : 检索到的排队消息数(如果发生故障,则为 0)。

 

void EvrRtxMessageQueueGetSpace(osMessageQueueId_t mq_id,
  uint32_t space 
 )  

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。
[in]space消息的可用插槽数。

当调用函数 osMessageQueueGetSpace 并且其执行结果已知时,将生成事件 MessageQueueGetSpace

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • space : 检索到的消息可用时隙数(如果发生故障则为 0)。

 

void EvrRtxMessageQueueReset(osMessageQueueId_t mq_id) 

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。

调用函数 osMessageQueueReset 时会生成事件 MessageQueueReset

事件记录器中的值显示:

  • mq_id : 消息队列 ID。

 

void EvrRtxMessageQueueResetDone(osMessageQueueId_t mq_id) 

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。

当函数 osMessageQueueReset 成功完成消息队列重置时,将生成事件 MessageQueueResetDone

事件记录器中的值显示:

  • mq_id : 消息队列 ID。

 

void EvrRtxMessageQueueDelete(osMessageQueueId_t mq_id) 

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。

调用函数 osMessageQueueDelete 时会生成事件 MessageQueueDelete

事件记录器中的值显示:

  • mq_id : 消息队列 ID。

 

void EvrRtxMessageQueueDestroyed(osMessageQueueId_t mq_id) 

参数

[in]mq_idosMessageQueueNew 获取的消息队列 ID。

当函数 osMessageQueueDelete 成功删除消息队列对象时,将生成事件 MessageQueueDestroyed

事件记录器中的值显示:

  • mq_id : 消息队列 ID。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值