关于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条回答
nhonglan
1楼-- · 2019-07-14 22:59
"请记住,在STM32上,奇偶检验位要计算在数据位中。",----------------stm32真变态啊。
蔡甸一角
2楼-- · 2019-07-15 04:55
奇偶检验位是一个有特殊意义的数据位,你去仔细地研究一下它的来历就知道了。

你自己不懂就不要乱评价。
drakannie
3楼-- · 2019-07-15 06:15
 精彩回答 2  元偷偷看……
YOYOOO
4楼-- · 2019-07-15 08:16
我没有贬低stm32的意思,只是觉得他这点跟别的mcu不一样而已。

还有他的usart发送寄存器空中断,也和别的不一样,别的mcu(如nxp的arm)是变为空才中断,他是只要是空就不停的中断。
yvochen
5楼-- · 2019-07-15 10:43
通常是设置成小于一半就中断一下拉。
胡扯123
6楼-- · 2019-07-15 11:19

我的设置如下:
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);

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

不知道发送的时候如果加了奇偶校验,还要加其他的什么设置。

一周热门 更多>