首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADC任务和流任务中的FreeRtos问题

ADC任务和流任务中的FreeRtos问题
EN

Stack Overflow用户
提问于 2018-05-25 10:19:07
回答 1查看 345关注 0票数 0

我有一个ADC任务,它使用4个通道,使用DMA进行传输,我还有一个流客户端,它通过TCP套接字来流ADC数据,使ADS任务的优先级低于流客户端。

我正在向流客户端发送一个整数,该整数选择选择哪个ADC通道作为消息队列。

问题是,当发送adc通道整数时,队列溢出。

ADC任务

代码语言:javascript
复制
if(bufferSelect != BUFFERS_NOT_READY)
        {
            if(xQueueSend(g_adcQueue, &bufferSelect,  0) != pdPASS)
            {
                throwError(ERROR_MESSAGE_QUEUE_FULL);
                PRINTF("%s\r\n", getErrorMessage(ERROR_MESSAGE_QUEUE_FULL));
            }
            bufferSelect = BUFFERS_NOT_READY;
        }

流客户端任务

代码语言:javascript
复制
/* obtain next buffer ready event */
        if(xQueueReceive(g_adcQueue, &bufferSelect, 0) == pdFALSE)
        {
            g_stopStreaming = true;
            continue;
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-25 10:59:33

您似乎将队列完整状态处理为一个错误,而它通常不是--队列的目的之一是向生成程序施压--这正是您在这里应该做的:如果流任务无法消化您向其抛出的数据,那么您就产生了太多的数据。

当使用者代码中没有非活动(等待I/O)周期时,使用者的优先级只会帮助将队列填充状态保持在合理的水平。一旦消费者有了这样的等待期,单凭优先级并不能帮助您接受队列会变得满的事实。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50526928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档