打印

stm32 串口接收的校验问题

[复制链接]
5980|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短接了?

使用特权

评论回复
5
wangqilin7| | 2014-8-24 12:01 | 只看该作者
妈蛋~~~~~~~老子,耽误不少时间~~~
  USART_InitStructure.USART_WordLength = USART_WordLength_9b;
有这个问题的,8成是加奇偶校验了,8bit数据+1bit校验=9   这句不是
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;

使用特权

评论回复
6
icecut| | 2014-8-24 12:45 | 只看该作者
wangqilin7 发表于 2014-8-24 12:01
妈蛋~~~~~~~老子,耽误不少时间~~~
  USART_InitStructure.USART_WordLength = USART_WordLength_9b;
有这 ...

基础不牢,设备不熟。。。。那就只剩下怨天尤人了。
串口出问题,直接上示波器。很容易解决

使用特权

评论回复
7
mgiga| | 2015-11-5 22:13 | 只看该作者
哈,是例程错了么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

5

帖子

1

粉丝