5.FreeRTOS_队列基础知识

队列实质:队列是一个环形缓冲区,遵循先入先出(FIFO),通常将数据写入尾部,也可强制写到头部。当强制写到头部时,并不会覆盖原来的头部数据。

队列等待唤醒原则:唤醒最高优先级的任务。当优先级一致时,唤醒已经等待时间最长的任务

队列中包含的内容:数据buf,等待数据的任务,等待写数据的任务 

队列结构体

队列结构体的声明如下:

typedef xQUEUE Queue_t;

typedef struct QueueDefinition 
{
    /* 指针,用于指向存储数据的空间 */
    int8_t * pcHead;    /* 空间头部 */      
    int8_t * pcWriteTo; /* 写入的空间位置 */      
    
    union
    {
        QueuePointers_t xQueue; /* 读队列相关结构体 */    
        SemaphoreData_t xSemaphore; 
    } u;
    
    /* 链表,用于存放等待写入数据任务、等待读取数据任务 */
    List_t xTasksWaitingToSend;    /* 写入数据任务 */             
    List_t xTasksWaitingToReceive; /* 读取数据任务 */        

    volatile UBaseType_t uxMessagesWaiting; 
    UBaseType_t uxLength;                   
    UBaseType_t uxItemSize;                 

    volatile int8_t cRxLock;                
    volatile int8_t cTxLock;               

    #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值