15735|25

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32加奇偶校验的问题 [复制链接]

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;就接收不到数据了,不知道问题处在那里,请各位指教。
此帖出自stm32/stm8论坛

最新回复

楼主,问题解决吗?2楼的说法可行吗?   详情 回复 发表于 2016-11-8 17:25
点赞 关注
 

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
如果PC端设置为: 数据位=8,停止位=1,奇偶检验=偶
则STM32的设置为:数据位=9,停止位=1,奇偶检验=偶

请记住,在STM32上,奇偶检验位要计算在数据位中。
此帖出自stm32/stm8论坛
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 "请记住,在STM32上,奇偶检验位要计算在数据位中。",----------------stm32真变态啊。
此帖出自stm32/stm8论坛
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
"请记住,在STM32上,奇偶检验位要计算在数据位中。",----------------stm32真变态啊。
奇偶检验位是一个有特殊意义的数据位,你去仔细地研究一下它的来历就知道了。

你自己不懂就不要乱评价。
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 呵呵,的确有些变态。通常我们所说的数据位不包括校验位。
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

6
 


呵呵,群众的眼睛是雪亮的。

版主不要过敏,我没有贬低stm32的意思,只是觉得他这点跟别的mcu不一样而已。

还有他的usart发送寄存器空中断,也和别的不一样,别的mcu(如nxp的arm)是变为空才中断,他是只要是空就不停的中断。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 通常是设置成小于一半就中断一下拉。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

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

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

不知道发送的时候如果加了奇偶校验,还要加其他的什么设置。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 弄了一上午,做了n多尝试,结果还是不行,不是收不到数据,就是数据的最高位包含了校验位。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 又发现一个问题,有时候数据没法接收到,用仿真器看的时候,数据的确是一直在发送,但是有时候就接收不到了,用示波器也没有看到波形,不知道什么原因。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 你先把波特率降下来,等双方都稳定了再调上去。也许是波特率太高,某一方的响应跟不上。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 不是,我用示波器看了一下,计算机的发送波形是有的,单片机也能正确接收到,而单片机内部发送也是一直发送的,但是看不到发送波形。不知道什么影响到什么寄存器了,我只是改了改奇偶校验,但是只要改了,有时候就通讯不上了,改回来也不行,不知道啥原因呢。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 现在用的是STM32F103RCT6,以前用vbt6的时候没遇到过这类问题。
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

14
 
现在用的是STM32F103RCT6,以前用vbt6的时候没遇到过这类问题。
午夜霓虹 发表于 2010-1-14 15:27
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 我现在也摸不着啥原因,呵呵,奇偶校验反正是失败了。我下载了一个以前的程序,运行一下,能正常通讯,然后再把我这次改回来的程序下载进去,就一切正常了。
此帖出自stm32/stm8论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 呵呵,你自己改来改去,把自己都改晕了,别人看着就更晕了,。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

17
 
                                 没有改动什么,就是想加校验位来着,后来发现的这个问题,就是用仿真器看到数据写到串口的发送寄存器了,但是管脚没有数据输出。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

18
 
                                 仿真器看到数据写到串口发送寄存器了?寄存器的值不是你软件写进去的吗,你如果用示波器打不到波形,就证明没发
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 现在初步估计是编译器的bug,因为从新编译两次,不改动任何地方,有时候就好了,新出的芯片,估计编译器完全支持的很好还要些时候。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

20
 
                                 即使编译器有BUG,也不可能2次对同样的程序编译产生不同的结果。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表