STM32的UART在初始化时,我们通常用到最多的就是无校验位,1停止位。但是我在项目中也遇到某些芯片通信用的需要奇校验或者偶校验,这里需要特别注意的是STM32中开启奇偶校验位,是要占用一位数据位,所以需要把数据位设置为9位。可参考以下代码。
USART_InitStructure.USART_BaudRate = baudrate; /* 波特率设置 */
USART_InitStructure.USART_WordLength = USART_WordLength_9b; /* 字长为9位数据格式 */
USART_InitStructure.USART_StopBits = USART_StopBits_1; /* 一个停止位 */
USART_InitStructure.USART_Parity = USART_Parity_No; /* 奇偶校验 */
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /* 无硬件数据流控制 */
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* 收发模式 */
USART_Init(UART5, &USART_InitStructure);
USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);
USART_Cmd(UART5, ENABLE);
USART_ClearFlag(UART5, USART_FLAG_TC); /* 清发送完成标志,Transmission Complete flag */
STM32的UART在初始化时,我们通常用到最多的就是无校验位,1停止位。但是我在项目中也遇到某些芯片通信用的需要奇校验或者偶校验,这里需要特别注意的是STM32中开启奇偶校验位,是要占用一位数据位,所以需要把数据位设置为9位。可参考以下代码。
USART_InitStructure.USART_BaudRate = baudrate; /* 波特率设置 */
USART_InitStructure.USART_WordLength = USART_WordLength_9b; /* 字长为9位数据格式 */
USART_InitStructure.USART_StopBits = USART_StopBits_1; /* 一个停止位 */
USART_InitStructure.USART_Parity = USART_Parity_No; /* 奇偶校验 */
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /* 无硬件数据流控制 */
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* 收发模式 */
USART_Init(UART5, &USART_InitStructure);
USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);
USART_Cmd(UART5, ENABLE);
USART_ClearFlag(UART5, USART_FLAG_TC); /* 清发送完成标志,Transmission Complete flag */
举报