野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11005|回复: 3

STM32串口 E,7,1 收发问题

[复制链接]
发表于 2019-1-22 14:54:56 | 显示全部楼层 |阅读模式
本帖最后由 东来东往 于 2019-1-22 14:57 编辑

将串口参数设置为校验位为偶校验,数据位为7为,停止位为1,设置程序如下:
[mw_shl_code=c,true]USART_InitStructure.USART_BaudRate = bps;//         
    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; [/mw_shl_code]
数据位长度,肯定要设置为8位了,这样其实数据位就包含了校验位了。
微信截图_20190122143409.png

帧格式

帧格式


分析:1.STM32设置数据位数只有8位和9位设置,当需要设置为7位时,只能设置为8位,这就包含了7位数据位和一位校验位了。
2.接收数据时Res = USART_ReceiveData(USART1)&0X7F;要把最高位舍弃才行,其实这位是校验位。
3.发送和接收数据只能发送2的7次方,0x80以下的数据了。
以上都是我个人理解的,不知道对错,特借贵论坛开个讨论,欢迎大家讨论。大家都来说说自己的看法。


回复

使用道具 举报

发表于 2019-1-25 08:39:47 | 显示全部楼层
一直都是用8位的数据,没用过其它模式
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-25 09:58:39 | 显示全部楼层
用用就知道了,在一些场合必须用这种模式
回复 支持 反对

使用道具 举报

发表于 2019-1-25 10:26:40 | 显示全部楼层
好好学习!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-14 07:08 , Processed in 0.027798 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表