stm32cubemx设置中断和异步通信模式。
先设置并开启串口中断接收
该函数功能为开启串口接收中断,并指定存储接收数据的缓存区,设置从串口接收的数据大小。这里要特别注意,该函数只有从串口接收到Size个数据后才会返回,不然会阻塞。
HAL_UART_Receive_IT(&huart1, multiInOne.uartBuffer[0].rxdBuf, 5);
接收中断处理函数设置再次使能串口中断接收:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART1)
{
HAL_UART_Receive_IT(multiInOne.uartBuffer[0].huartHandle, multiInOne.uartBuffer[0].rxdBuf, 5);
}
}
串口最容易犯的错误是波特率设置错误,所以切记切记,波特率要设置正确。
注意:如果加奇偶校验位,需要设置数据位为9位数据位。另外还要注意是MSB先发送还是LSB先发送。
如:
数据结构是“起始位(1比特)+数据(8比特)+偶奇偶校验(1比特)+止动位(1比特)”,通过LSB第1发送。