(一)、uart / usart 要注意的 API使用方法。
1.__HAL_UART_GET_FLAG 是获取 SR 寄存器标志位状态
2.__HAL_UART_CLEAR_FLAG 是清除 SR 寄存器标志位状态,不同于读改写的清零方式,这是直接清零。
3.__HAL_UART_CLEAR_xxFLAG ,xx为PE FE NE ORE IDLE 共5个, 清除方式都是一样的,要先读取SR,再读取DR才能清除对应的标志位
4.UART_Receive_IT或许有bug,tmp = (uint16_t*) huart->pRxBuffPtr;需要pRxBuffPtr十六位对齐,但是pRxBuffPtr类型是uint8_t *,是不一定对齐的。所以在声明buffer的时候要注意声明称16位以上对齐的数据。
5.SR不能用软件置1,一般都是软件清零,通过读改写方式清零会导致中断请求丢失,推荐软件直接写0清除标志。
6.注意UART_FLAG_xx和UART_IT_xx的区别
7.串口发送只能一次,问题在于没有开启TC中断
(二)串口的框图需要理解透
(三)代码如下
接收不定长的数据
/**
* @