ESP新手一枚,写了一段串口代码如下:
const int uart_num = UART_NUM_0;
void uart_init(void)
{
//串口配置结构体
uart_config_t uart_config = {
.baud_rate = 115200,
.data_bits = UART_DATA_8_BITS,
.parity = UART_PARITY_DISABLE,
.stop_bits = UART_STOP_BITS_1,
.flow_ctrl = UART_HW_FLOWCTRL_CTS_RTS,
.rx_flow_ctrl_thresh = 122,
};
printf("!!!!!!!!!!!!!!\n");
ESP_ERROR_CHECK(uart_param_config(uart_num, &uart_config)); //设置串口
//IO映射-> T:IO16 R:IO17
printf("@@@@@@@@@@@@@@@@\n");
ESP_ERROR_CHECK(uart_set_pin(uart_num, TXD_PIN, RXD_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
//注册串口服务即使能+设置缓存区大小
printf("###############\n");
ESP_ERROR_CHECK(uart_driver_install(uart_num, RX_BUF_SIZE * 2, TX_BUF_SIZE * 2, 0, NULL, 0));
}
void uart_rx_task()
{
static const char *RX_TASK_TAG = "RX_TASK";
uint8_t* data = (uint8_t*) malloc(RX_BUF_SIZE+1);//分配内存,用于串口接收
while (1) {
//获取串口1接收的数据
const int rxBytes = uart_read_bytes(uart_num, data, RX_BUF_SIZE, 10 / portTICK_RATE_MS);
if (rxBytes > 0) {
data[rxBytes] = 0;//在串口接收的数据增加结束符
ESP_LOGI(RX_TASK_TAG, "Read %d bytes: '%s'", rxBytes, data);
ESP_LOG_BUFFER_HEXDUMP(RX_TASK_TAG, data, rxBytes, ESP_LOG_INFO);
//将接收到的数据发出去
uart_write_bytes(uart_num, (char *)data, rxBytes);
}
}
free(data);//释放申请的内存
}
烧写后mointor打印如下:monitor中没有错误信息,我认为串口配置正确,然后想测试串口收发数据是否正常,根据开发文档提示,将RX,TX,GND与另外一个UAB转串口进行链接,连线图:
重新给开发板上电,monitor打印如下,各位大神帮我看看,问题出在哪里了,在这里谢过了