串口数据的接收可以用三种方式:
1、阻塞方式(接收数据很少用到)
2、中断方式(用的比较多,但是在接收不定长协议数据时候,逻辑判断较复杂)
3、DMA IDLE方式(常用做接收不定长数据)
用cubemx配置下串口驱动如下
接收数据用到的结构体
#define uart_buf_size 256
typedef union{
struct{
uint8_t buf[uart_buf_size];
uint8_t timeout;
uint16_t len;
}bf;
uint8_t data[uart_buf_size+3];
}uart_struct_t;
使能串口空闲中断