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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qiannianlaoyao2010/article/details/102768054

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;

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

猜你喜欢

转载自blog.csdn.net/qiannianlaoyao2010/article/details/102768054