everkimage 发表于 2018-6-6 17:10:13

STM32F0串口接收最高位总是0

先说明是老程序了,之前没问题,一直在用。今天突然接收最高位总是0,比如发0xFF会收到0x7F,按照串口发送顺序,就是最后一位(停止位前)总是读到0。串口配置是8位数据、1位停止位、无奇偶校验、无流控制。
刚才我用官方库里面的代码跑了以下,可以收到完整数据。

请问下各位大神,这大概是怎么个问题?

toofree 发表于 2018-6-6 18:09:14

一切以波形说话。
用你的STM32F0往出发数据,0x55、0xaa、0x5a、0xa5,示波器看一下波形。对比一下接收和发送的波形有什么不同,位数和波特率。

你接收发现的问题,同样可以在发送上反映出来。

另外,你是用什么给STM32F0发的数据?
之前遇到过USB转232线不靠谱问题,当发单字节的时候没问题,当连续发头0xff的时候,就会有问题,观察波形发现是连续发送后,USB转232线的波形出问题了。

す疯Ⅱ恒す 发表于 2018-6-6 17:13:05

你程序设置为7 bit工作模式?看看波形怎么样吧。看看波形对不对?

wenyangzeng 发表于 2018-6-6 17:57:42

应该是系统时钟频率出现偏差了。硬件问题。

anobodykey 发表于 2018-6-6 18:01:47

看数据图是不是对的,检查时钟是否正确配置

中山无雪 发表于 2018-6-6 19:11:33

不像硬件问题,估计还是设置问题

看看原先用的MCU和现在的新品是不是有什麽改动(是不是厂家版本升级了,在这方面做了改正)

wudianjun2001 发表于 2018-6-7 08:37:46

先检查硬件,换块板子看看

发表于 2018-6-7 08:41:22

从现象来看,应该是串口的配置不匹配导致。看一下源码中串口的配置。

everkimage 发表于 2018-6-7 09:30:06

本帖最后由 everkimage 于 2018-6-7 10:54 编辑

昨晚找了好久,发现是接收中断数据接收后与了下0x7F,不知道当初是怎么想的,可能是作测试忘了删掉了。对不起大家,浪费大家时间。非常感谢你们。:L
页: [1]
查看完整版本: STM32F0串口接收最高位总是0