esp-idf 引入十分多的组件, 功能复杂度较大。我们可以通过 Kconfig 来进行功能选择。

Console

类似 RTT 功能, 我们希望通过 console 打印信息,方便1调试啥的,我买的是和宙的 esp32c3 简约版, 对比标准版就是少了USB转串口芯片。USB母座是直接接到esp32c3的IO18,19上的。默认情况下,esp32c3的usb下挂载两个设备,一个是jtag, 一个是串口,

image.png

image.png

通过 probe-rs list 命令查看发现是一个 jtag 设备.

sdkconfigmenuconfig 中使能 CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG 即可通过 jtag 作为 console

#include "freertos/idf_additions.h"
#include "freertos/projdefs.h"
#include <driver/usb_serial_jtag.h>
#include <esp_log.h>
#include <stdio.h>
void app_main(void) {
  int i = 0;

  // 初始化串口配置
  usb_serial_jtag_driver_config_t usb_serial_jtag_driver_config = {
      .rx_buffer_size = 1024,
      .tx_buffer_size = 1024,
  };
  usb_serial_jtag_driver_install(&usb_serial_jtag_driver_config);
  ESP_LOGI("test: ", "USB_SERIAL_JTAG init done");

  while (1) {
    vTaskDelay(pdMS_TO_TICKS(500));
    ESP_LOGI("test: ", "i = %d", i++);
  }
}
idf.py flash
# 使用 C-] 退出监视器
idf.py monitor

好处是我们可以通过 monitor 观察运行情况了。

ref

https://docs.espressif.com/projects/esp-idf/zh_CN/v5.4.1/esp32c3/api-reference/kconfig.html