STM32的UART在奇偶校验设置注意

STM32的UART在初始化时,我们通常用到最多的就是无校验位,1停止位。但是有时候我们也会遇到一些特殊的情况,比如一些设备要求有奇偶校验,那么我们要根据情况设定stm32的寄存器。 以下以stm32库函数为例说明stm32在设置寄偶检验时的误区:

USART_InitStructure.USART_BaudRate = 115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;  //8数据位
  USART_InitStructure.USART_StopBits = USART_StopBits_1; //1停止位
  USART_InitStructure.USART_Parity = USART_Parity_No;	 //0奇偶校验位
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode =USART_Mode_Tx;

  USART_Init(USART3, &USART_InitStructure);

以上代码为我们常用的参数初始化代码。 当USART_InitStructure.USART_Parity = USART_Parity_Odd; 或USART_InitStructure.USART_Parity = USART_Parity_Even; 就是寄校验或偶校验时,此时如果数据位还是USART_WordLength_8b就会出问题,因为校验位此时占用了一位 我们在初始化时就要把数据位设置为9位 USART_InitStructure.USART_WordLength = USART_WordLength_9b;

问题解决,一个小的误区,为了让大家少走弯路,避免产品在使用中遇到不必要的麻烦,专门写下次文分享给大家。

经验分享 程序员 微信小程序 职场和发展