STM32F103VET6的串口设置奇偶校验后数据通信有误

2019-07-14 15:38发布

各位大神好
我自己在做STM32F103VET6串口通信的时候,发现几个问题启用奇偶校验位后,数据通信有点困惑
我的初始化代码如下:
  USART_InitStructure.USART_BaudRate = 9600;  //通信波特率为9600
   Comm.Flag = RX_WAIT;        
   USART_InitStructure.USART_WordLength = USART_WordLength_9b; //数据位9
   USART_InitStructure.USART_StopBits = USART_StopBits_1;//停止位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(USART2, &USART_InitStructure);
   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
   USART_ClearFlag(USART2, USART_FLAG_TC);
   USART_ITConfig(USART2,USART_IT_TC,ENABLE);
   USART_Cmd(USART2, ENABLE);

在实际测试过程中发现设置为奇校验后,将计算机串口设置成奇偶校验都可以进行通信
好像校验位并没有产生实际的校验作用
实际的寄存器中我也跟过,对奇偶校验位也有设置
我就是想搞清楚到底是什么地方的问题
谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
法规处发
1楼-- · 2019-07-15 02:03
 精彩回答 2  元偷偷看……
就好国dd
2楼-- · 2019-07-15 04:02
一般的串口调试工具都支持吧,比如SSCOM32。
法规处发
3楼-- · 2019-07-15 05:48
不是调试工具的问题
就是串口的问题
现在奇偶校验都能通信,实在想不出什么地方有问题,如何处理了
fhdgxfvx
4楼-- · 2019-07-15 09:03
实际上奇偶校验要互相匹配才能通讯吧,不匹配的时候串口送过来的是固定的数据还是通讯的数据?
法规处发
5楼-- · 2019-07-15 13:51
仔细核对了STM8heSTM32的手册,发现STM32的串口状态寄存器在先读出USART_SR,再读出USART_DR寄存器后,所有的状态位被清除,所以在判断奇偶标志位错误的时候,应该在读取DR寄存器之前判断,从而判别奇偶校验的正确,这个小小的细节和以前用的MCU真的不一样,在使用STM32的时候,还得仔细阅读数据手册啊
fgfFsG
6楼-- · 2019-07-15 19:30
 精彩回答 2  元偷偷看……

一周热门 更多>