stm32 串口接收的校验问题

[复制链接]
6817|6
 楼主| lzjin2004 发表于 2010-6-10 15:01 | 显示全部楼层 |阅读模式
我用的是stm32f103rct6,用串口3以7个数据位、偶校验的方式通讯,发送可以实现,但是接收的时候无法自动去除校验位,比如我发送52 30 31 0d几个数,串口自动加上校验位发送出去的是d2 30 b1 8d;但是当接收到d2 30 b1 8d时,为什么不能自动去掉校验位,输出52 30 31 0d呢?难道要我写段程序逐字节去处理吗?
ST_ARM 发表于 2010-6-10 16:38 | 显示全部楼层
“发送可以实现”---请问你的接收方是什么?如果是PC,PC替你完成了。所以你用STM32去接收时要用软件去除最高位:
a= USART_ReceiveData(USART1) & 0x80;
 楼主| lzjin2004 发表于 2010-6-20 10:55 | 显示全部楼层
stm32f103rct6的串口是双工工作方式,就是发送完数据后就接收数据,发送和接收的数据都是偶校验的,我是说我设置了偶校验后发送时串口能自动添加校验位后发送,但是串口在接收状态收到数据后却不能自动去除校验位。2楼的用软件去除最高位的方法当然可以,却无法判断接收到的字节校验是否正确。
ST_ARM 发表于 2010-6-20 17:08 | 显示全部楼层
你是不是将RX与TX短接了?
wangqilin7 发表于 2014-8-24 12:01 | 显示全部楼层
妈蛋~~~~~~~老子,耽误不少时间~~~
  USART_InitStructure.USART_WordLength = USART_WordLength_9b;
有这个问题的,8成是加奇偶校验了,8bit数据+1bit校验=9   这句不是
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
icecut 发表于 2014-8-24 12:45 | 显示全部楼层
wangqilin7 发表于 2014-8-24 12:01
妈蛋~~~~~~~老子,耽误不少时间~~~
  USART_InitStructure.USART_WordLength = USART_WordLength_9b;
有这 ...

基础不牢,设备不熟。。。。那就只剩下怨天尤人了。
串口出问题,直接上示波器。很容易解决
mgiga 发表于 2015-11-5 22:13 | 显示全部楼层
哈,是例程错了么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

5

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部