CMSIS-RTOS2 文档翻译 之 参考(RTX5 特定的 API 之 宏定义)

宏定义

RTX5 宏定义。更多...

宏定义

#define  osRtxThreadCbSize   sizeof(osRtxThread_t)
  线程控制块大小。更多...
 
#define  osRtxTimerCbSize   sizeof(osRtxTimer_t)
  定时器控制块大小。更多...
 
#define  osRtxEventFlagsCbSize   sizeof(osRtxEventFlags_t)
  事件标志控制块大小。更多...
 
#define  osRtxMutexCbSize   sizeof(osRtxMutex_t)
  互斥锁控制块大小。更多...
 
#define  osRtxSemaphoreCbSize   sizeof(osRtxSemaphore_t)
  信号量控制块大小。更多...
 
#define  osRtxMemoryPoolCbSize   sizeof(osRtxMemoryPool_t)
  内存池控制块大小。更多...
 
#define  osRtxMessageQueueCbSize   sizeof(osRtxMessageQueue_t)
  消息队列控制块大小。更多...
 
#define  osRtxMemoryPoolMemSize(block_count, block_size)   (4*(block_count)*(((block_size)+3)/4))
  内存池内存大小。更多...
 
#define  osRtxMessageQueueMemSize(msg_count, msg_size)   (4*(msg_count)*(3+(((msg_size)+3)/4)))
  消息队列内存大小。更多...
 

描述

宏定义文档

#define osRtxThreadCbSize   sizeof(osRtxThread_t)

该宏定义公开了 RTX5 线程控制块所需的最小内存量,请参阅 osThreadAttr_t :: cb_mem 和 osThreadAttr_t :: cb_size 。

例:

// Used-defined memory for thread control block
static uint32_t thread_cb[ osRtxThreadCbSize/4U];
#define osRtxTimerCbSize   sizeof(osRtxTimer_t)

该宏定义公开了 RTX5 定时器控制块所需的最小内存量,请参阅 osTimerAttr_t :: cb_mem 和 osTimerAttr_t :: cb_size 。

例:

// Used-defined memory for timer control block
static uint32_t timer_cb[ osRtxTimerCbSize/4U];
#define osRtxEventFlagsCbSize   sizeof(osRtxEventFlags_t)

此宏定义公开了 RTX5 事件标志控制块所需的最小内存量,请参阅 osEventFlagsAttr_t :: cb_mem 和 osEventFlagsAttr_t :: cb_size 。

例:

// Used-defined memory for event flags control block
static uint32_t evflags_cb[ osRtxEventFlagsCbSize/4U];
#define osRtxMutexCbSize   sizeof(osRtxMutex_t)

该宏定义公开了 RTX5 互斥锁控制块所需的最小内存量,请参阅 osMutexAttr_t :: cb_mem 和 osMutexAttr_t :: cb_size 。

例:

// Used-defined memory for mutex control block
static uint32_t mutex_cb[ osRtxMutexCbSize/4U];
#define osRtxSemaphoreCbSize   sizeof(osRtxSemaphore_t)

此宏定义公开了 RTX5 信号量控制块所需的最小内存量,请参阅 osSemaphoreAttr_t :: cb_mem 和 osSemaphoreAttr_t :: cb_size 。

例:

扫描二维码关注公众号,回复: 131284 查看本文章
// Used-defined memory for semaphore control block
static uint32_t sema_cb[ osRtxSemaphoreCbSize/4U];
#define osRtxMemoryPoolCbSize   sizeof(osRtxMemoryPool_t)

该宏定义公开了 RTX5 内存池控制块所需的最小内存量,请参阅 osMemoryPoolAttr_t :: cb_mem 和 osMemoryPoolAttr_t :: cb_size 。

例:

// Used-defined memory for memory pool control block
static uint32_t timer_cb[ osRtxMemoryPoolCbSize/4U];

#define osRtxMessageQueueCbSize   sizeof(osRtxMessageQueue_t)

此宏定义公开了 RTX5 消息队列控制块所需的最小内存量,请参阅 osMessageQueueAttr_t :: cb_mem 和 osMessageQueueAttr_t :: cb_size 。

例:

// Used-defined memory for message queue control block
static uint32_t msgqueue_cb[ osRtxMessageQueueCbSize/4U];
#define osRtxMemoryPoolMemSize (   block_count,
      block_size 
  )      (4*(block_count)*(((block_size)+3)/4))

内存大小(字节)用于内存池存储。

该宏定义公开了 RTX5 内存池内存所需的最小内存量,请参阅 osMemoryPoolAttr_t :: mp_mem 和 osMemoryPoolAttr_t :: mp_size 。

例:

// Maximum number of objects
#define OBJ_COUNT 8U
// Object type
typedef struct {
uint32_t value1;
uint8_t value2;
} object_t;
// Used-defined memory for memory pool memory
static uint32_t mempool_cb[ osRtxMemoryPoolMemSize(OBJ_COUNT, sizeof(object_t))/4U];
参数
block_count 内存池中的最大内存块数。
block_size 内存块大小以字节为单位。
#define osRtxMessageQueueMemSize (   msg_count,
      msg_size 
  )      (4*(msg_count)*(3+(((msg_size)+3)/4)))

消息队列存储的内存大小(以字节为单位)。

该宏定义公开了 RTX5 消息队列内存所需的最小内存量,请参阅 osMessageQueueAttr_t :: mq_mem和osMessageQueueAttr_t :: mq_size 。

例:

// Maximum number of messages
#define MSG_COUNT 16U
// Message data type
typedef struct {
uint32_t value1;
uint8_t value2;
} msg_item_t;
// Used-defined memory for message queue
static uint32_t mq_mem[ osRtxMessageQueueMemSize(MSG_COUNT, sizeof(msg_item_t))/4U];
参数
msg_count 队列中消息的最大数量。
msg_size 最大消息大小以字节为单位

猜你喜欢

转载自blog.csdn.net/u012325601/article/details/80208966