STM32串口通信使用奇偶校验的时候应该设置数据位长度9bit,奇偶校验是硬件完成的,并且stm32用校验位时,数据位要选9位,8位会出现故障可能。
STM32串口通信使用奇偶校验代码如下:#ifdef USART1_ON
//允许USART1的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Odd;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init( USART3, &USART_InitStructure);
STM32串口通信使用奇偶校验时在有奇偶校验时需要9个数据位,无奇偶校验时8个数据位即可。