Как ввести текст через esp-idf терминал, чтобы микроконтроллер принял его в переменной и вывел обратно в терминал?

Всем доброго времени суток.

Я новичек в программировании микроконтроллеров и решил обратиться за помощью.

Суть проблемы в том, что мне нужно ввести некоторую текстовую информацию в терминал (в данном случае я пытаюсь ввести через терминал esp-idf), сохранить ее в некоторой переменной и затем вывести обратно ее в терминал, то есть простая эхо программа прежде чем начать использовать ввод информации для более сложных проектов.

Но у меня возникли проблемы с принятием текста и прежде чем уточнить какие, я напишу про инструменты и тип подключения которым я пользуюсь.

Моя плата это ESP32-S3_DEVKITC-1.
Я пишу в VScode через расширение esp-idf и использую встроенные библиотеки.
Пишу на языке c++.
Прошиваю плату через обычный зарядный кабель usb - type c.

Далее блок кода, который я позаимствовал в основном из нейросетей, но он мне кажется вполне логичным.
Код работает, в том плане, что он запускает главную функцию и выводит строку

I (270) UART_ECHO: UART echo program started. Waiting for input...

Проблема возникает в том, что я не могу ввести ни единого символа в терминал и при попытке ввести символ, сам терминал выдает предупреждение

--- Warning: Writing to serial is timing out.
Please make sure that your application supports an interactive console and that you have picked the correct console for serial communication.

Я, честно, не знаю как решить эту проблему.

В чем может быть проблема?

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"
#include "esp_log.h"

#define UART_PORT_NUM UART_NUM_0
#define UART_BAUD_RATE 115200
#define UART_RX_BUF_SIZE 1024

static const char *TAG = "UART_ECHO";

extern "C" void app_main(void)
{
    // Конфигурация UART
    uart_config_t uart_config = {
        .baud_rate = UART_BAUD_RATE,
        .data_bits = UART_DATA_8_BITS,
        .parity = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
        .source_clk = UART_SCLK_APB,
    };

    ESP_ERROR_CHECK(uart_driver_install(UART_PORT_NUM, UART_RX_BUF_SIZE, 0, 0, NULL, 0));
    ESP_ERROR_CHECK(uart_param_config(UART_PORT_NUM, &uart_config));

    ESP_ERROR_CHECK(uart_set_pin(UART_PORT_NUM, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, 
    UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));

    ESP_LOGI(TAG, "UART echo program started. Waiting for input...");

    uint8_t data[UART_RX_BUF_SIZE];
    while (1)
    {
        int len = uart_read_bytes(UART_PORT_NUM, data, sizeof(data) - 1, pdMS_TO_TICKS(100));
        if (len > 0)
        {
            data[len] = '\0';

            ESP_LOGI(TAG, "Received: %s", data);

            uart_write_bytes(UART_PORT_NUM, data, len);
        }
        vTaskDelay(pdMS_TO_TICKS(10));
    }
}

Ответы (0 шт):