你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

串口收发7位偶校验该怎么设置,求大侠

[复制链接]
钊钊 提问时间:2016-2-19 02:50 /
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_Parity_No ;        //²ÉÓÃУÑ鷽ʽ         ÎÞ
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;
        
        USART_Init(USART1, &USART_InitStructure);


按理说这样设置就是正确的,但是通过计算机发送过去的数据单片机串口接收显示为错误,单片机发送过来的 数据 用 9600 7 E 1的串口调试工具可以解码出来,这是怎么回事,是不是我的设置还漏掉了什么


楼下我已经发出结论,以及出现该情况的解释
收藏 评论6 发布时间:2016-2-19 02:50

举报

6个回答
钊钊 回答时间:2016-2-21 21:15:59
今天我自己来结贴吧,网上的这方面的比较少, 比如我这里要写入的是  7 E 1的通讯参数,那么我楼上的设置是完全正确的,那会有人问了,为什么数据位是 8B呢,因为在STM32里面,数据位当没有奇偶校验的时候,的确是8位全都写入数据位里面,当存在奇偶校验的时候,奇偶校验位是补充在数据位中的,所以我们得出结论了,如果要使得通讯参数为 8 E 1的时候,写入的数据位参数应该就是9位,
特别注意:计算机使用的一般的串口通讯软件,是无法输出奇偶校验的数据码的,所以通信的话,计算机接收到的数据解码出来是对的,然而单片机接收到的数据却是错误的,这种情况需要大家注意。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

回答时间:2016-2-19 09:48:20
楼主设置的是8位的,要配置一致才可以。
钊钊 回答时间:2016-2-19 10:27:03
安 发表于 2016-2-19 09:48
楼主设置的是8位的,要配置一致才可以。

STM32的那个校验位是计算在数据位里面的,所以按照理解得话,E 7 1的模式应该是 8位数据,然后开启偶校验占用一位,然后停止位一位,在网上找了一些说法,是说接收下来的东西 做一个 (&0X7F)位与操作,的确可以正常通讯,但是这样应该是最笨的方法了,大家再看看,怎么解决
回答时间:2016-2-20 10:43:10
楼主用的是哪个芯片?
钊钊 回答时间:2016-2-21 21:11:54
安 发表于 2016-2-20 10:43
楼主用的是哪个芯片?

rtc6不过我是来结贴的,结论写楼下了
a阿伟 回答时间:2017-9-22 16:18:00
我也关注

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版