FreeRTOS 的 StreamBuffer 未启动

问题描述 投票:0回答:1

当我使用以下命令创建 Freertos StreamBuffer 时,它似乎挂起:

StreamBufferHandle = xStreamBufferCreate(3,10);
IM 使用 stm32h743 mcu 和 CubeMX 在 KEIL uvision 编译器中生成的代码。

我编写了一个代码来简单地检查流缓冲区的创建

   #include "cmsis_os.h"
    #include "stream_buffer.h"
    static StreamBufferHandle_t StreamBufferHandle = NULL;
    uint8_t data_send[4];

int app_tocheck(void)
{
    // STM32CubeMX initialization code here

    // Create StreamBuffer
    StreamBufferHandle = xStreamBufferCreate(3, 10);

    if (StreamBufferHandle != NULL) {
        // StreamBuffer creation successful
          data_send[0] = 0x5C; // means succesfull
    } else {
        // StreamBuffer creation failed
          data_send[0] = 0xCC; // means failed
        // Handle the error or take appropriate action
    }

    // Code below osKernelStart() should not be executed as the scheduler has started
    while (1) {
        // Handle any non-RTOS tasks or activities here
    }
}

所以 data_send[0] 保持 0x00,我在调试器中看不到它。如果我将 data_send[0] 放在

StreamBufferHandle = xStreamBufferCreate(3, 10);
之前 - data_send[0] 更改为指定值。 我的 Freertos 堆大小是默认值
#define configTOTAL_HEAP_SIZE                    ((size_t)15360)
我错过了什么?

c stm32 freertos
1个回答
0
投票

我不确定您在问什么,因为您没有显示发送到流缓冲区的代码。发布的代码显示 data_send[0] 设置为两个常量之一,这两个常量都不为零 - 所以如果 data_send[0] 为零,我猜代码根本不会运行。

请注意,您的流缓冲区大小为 4,触发级别为 10,因此永远不会达到触发级别。

© www.soinside.com 2019 - 2024. All rights reserved.