0
本帖最后由 游走在01的海洋 于 2021-8-9 10:52 编辑
一、示范
1.简介:使用~esp-idfexamplesperipheralsuartuart_echo例程;使用前将此工程复制到自己创建的工程文件夹中;
2.杜邦线所对应引脚
//绿色 TX(21)
//红色 RX(20)
//蓝色 GND
3.图片:硬件---开发板、杜邦线、串口模块
二、代码
1.
- /**
- * This is an example which echos any data it receives on configured UART back to the sender,
- * with hardware flow control turned off. It does not use UART driver event queue.
- *
- * - Port: configured UART
- * - Receive (Rx) buffer: on
- * - Transmit (Tx) buffer: off
- * - Flow control: off
- * - Event queue: off
- * - Pin assignment: see defines below (See Kconfig)
- */
- /**********************************串口引脚宏定义**************************************************/
- #define ECHO_TEST_TXD 21//(CONFIG_EXAMPLE_UART_TXD) //修改为ESP32-C3-DevKitM-1开发板对应的TX串口号
- #define ECHO_TEST_RXD 20//(CONFIG_EXAMPLE_UART_RXD) //修改为ESP32-C3-DevKitM-1开发板对应的RX串口号
- #define ECHO_TEST_RTS (UART_PIN_NO_CHANGE)
- #define ECHO_TEST_CTS (UART_PIN_NO_CHANGE)
- /**********************************与CPU的串口安装有关系**************************************************/
- #define ECHO_UART_PORT_NUM (CONFIG_EXAMPLE_UART_PORT_NUM) //此声明在sdkconfig.h文件中,sdkconfig.h随文件的不同而不同,所以不需自己设置?
- #define ECHO_UART_BAUD_RATE (CONFIG_EXAMPLE_UART_BAUD_RATE)
- #define ECHO_TASK_STACK_SIZE (CONFIG_EXAMPLE_TASK_STACK_SIZE)
- #define BUF_SIZE (1024)
- static void echo_task(void *arg)
- {
- /**********************************串口结构体uart_config_t定义***************************************/
- /* Configure parameters of an UART driver,
- * communication pins and install the driver */
- uart_config_t uart_config = {
- .baud_rate = ECHO_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,
- };
- int intr_alloc_flags = 0;//串口函数uart_driver_install中的中断设置,具体查看 esp_intr_alloc.h文件
- #if CONFIG_UART_ISR_IN_IRAM
- intr_alloc_flags = ESP_INTR_FLAG_IRAM;
- #endif
- /*******************************************串口配置过程********************************************/
- //1.安装串口驱动程序(软件上) ---个人理解为:开启串口这个模块,并告知整个系统串口模块已开启,并配置了开启后的一些参数
- ESP_ERROR_CHECK(uart_driver_install(ECHO_UART_PORT_NUM, BUF_SIZE * 2, 0, 0, NULL, intr_alloc_flags));
- //2.串口具体参数配置(波特率、数据位数、停止位、校验位、硬件流控、时钟)
- ESP_ERROR_CHECK(uart_param_config(ECHO_UART_PORT_NUM, &uart_config));
- //3.串口的引脚配置
- ESP_ERROR_CHECK(uart_set_pin(ECHO_UART_PORT_NUM, ECHO_TEST_TXD, ECHO_TEST_RXD, ECHO_TEST_RTS, ECHO_TEST_CTS));
- // Configure a temporary buffer for the incoming data
- uint8_t *data = (uint8_t *) malloc(BUF_SIZE);
- /*******************************************串口执行函数********************************************/
- while (1) {
- // Read data from the UART
- int len = uart_read_bytes(ECHO_UART_PORT_NUM, data, BUF_SIZE, 20 / portTICK_RATE_MS);//每隔20ms从串口接收缓存中读一次数据
- // Write data back to the UART
- uart_write_bytes(ECHO_UART_PORT_NUM, (const char *) data, len);//如果数据为空(len=0),则返回0;
- }
- }
- void app_main(void)
- {
- /***************************************申请了一个任务******************************************/
- xTaskCreate(echo_task, "uart_echo_task", ECHO_TASK_STACK_SIZE, NULL, 10, NULL);
- }
复制代码
2.硬件连接好之后;在ESP-IDF命令工具中编译、下载,打开对应串口工具,发送数据有回复;
三、结果
1.使用USB转串口模块---COM4(我的电脑所识别的)
2.USB下载口可识别的端口号---COM7
四、ESP32-C3-DevKitM-1模块中的串口解释
1.ESP32-C3-DevKitM-1串口引脚
|
|