关于STM32加奇偶校验的问题

2019-07-14 16:33发布

ST有个例子 配置如下
    USART_InitStructure.USART_BaudRate = 9600;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.USART_Parity = USART_Parity_Even;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
用计算机接收数据的时候,奇偶校验位作为了数据的最高位,我把USART_WordLength_8b;改成USART_WordLength_9b;就接收不到数据了,不知道问题处在那里,请各位指教。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
胡扯123
1楼-- · 2019-07-15 12:59

我的设置如下:
USART_InitStructure.USART_BaudRate = 115200;
  USART_InitStructure.USART_WordLength = USART_WordLength_9b;;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.USART_Parity = USART_Parity_Even;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
   /* USART configuration */
   USART_Init(USART1,&USART_InitStructure);

结果是单片机可以正确接收计算机的消息,也可以正确返回,但是计算机接收不到单片机的任何数据。

不知道发送的时候如果加了奇偶校验,还要加其他的什么设置。
胡扯123
2楼-- · 2019-07-15 15:09
 精彩回答 2  元偷偷看……
ufydsyfsf
3楼-- · 2019-07-15 19:13
又发现一个问题,有时候数据没法接收到,用仿真器看的时候,数据的确是一直在发送,但是有时候就接收不到了,用示波器也没有看到波形,不知道什么原因。
nvhyfwe
4楼-- · 2019-07-16 00:53
你先把波特率降下来,等双方都稳定了再调上去。也许是波特率太高,某一方的响应跟不上。
胡扯123
5楼-- · 2019-07-16 04:09
不是,我用示波器看了一下,计算机的发送波形是有的,单片机也能正确接收到,而单片机内部发送也是一直发送的,但是看不到发送波形。不知道什么影响到什么寄存器了,我只是改了改奇偶校验,但是只要改了,有时候就通讯不上了,改回来也不行,不知道啥原因呢。
胡扯123
6楼-- · 2019-07-16 09:40
现在用的是STM32F103RCT6,以前用vbt6的时候没遇到过这类问题。

一周热门 更多>