LiDAR是通过串口发送数据的,所以需要配置ESP32的串口。
起初还以为和STM32的串口差不多,用中断接收数据,结果过看了官方例程,发现根本没有中断(普通接收中断)。
ESP32的串口是通过阻塞接收的方式来获取串口的数据,所以需要用到多线程。
说到多线程,之前用WIFI的时候发现ESP32居然可以用pthread_create()来创建线程,那么问题就来了,用pthread_create()和用Free RTOS的xTaskCreate()创建线程有什么区别吗。
回归ESP32的串口这个问题。
int uart_read_bytes(uart_port_t , uint8_t * , uint32_t , TickType_t ) 这个函数用来阻塞获取串口接收到的数据,参数含义如下:
第一个参数是串口号。
第二个参数是把串口接收到的数据放进哪块内存区域。
第三个参数是对应内存区域的长度。
第四个参数是阻塞时间。
第三、四个参数应相配合使用。当阻塞时间未到,数据长度到了,返回数据;当数据长度没到,阻塞时间到了,也返回数据。