打印

串口发送数据时诡异的错误,低四位正确,高四位基本全错

[复制链接]
3378|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 xiangxiaowei 于 2011-7-29 14:41 编辑

串口1发送数据到PC,发现诡异错误。然后写了程序逐个验证了一下,16进制显示,低四位完全正确,高四位基本全错。有哪个知道怎么回事吗?程序如下,发送0到255的数字。 波特率改到1200依然错误。问题已经解决,原先是8位,改为9位,一切正常。 就是这里:USART_InitStructure.USART_WordLength = USART_WordLength_9b; 。
再次更正一下,改为9位之后电脑虽然可以解析正确,但是传到其它设备却是错的。后来仔细检查了一下,发现程序里面是偶校验,我上位机选的没有校验。校验匹配之后就没有问题了。太大意了。。唉。。。。
for(i=0;i<256;i++)
{
            USART_SendData(USARTy, i);
while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET)
            {
            }
}

1.jpg (66.99 KB )

1.jpg

2.jpg (71.78 KB )

2.jpg
沙发
香水城| | 2011-7-29 13:09 | 只看该作者
估计是两边的速率误差造成,也可能是配置问题。

使用特权

评论回复
板凳
xiangxiaowei|  楼主 | 2011-7-29 13:19 | 只看该作者
不得不说这个有点诡异,改为9位之后正常,上位机还是8位接收。。。

使用特权

评论回复
地板
香水城| | 2011-7-29 13:53 | 只看该作者
不得不说这个有点诡异,改为9位之后正常,上位机还是8位接收。。。
xiangxiaowei 发表于 2011-7-29 13:19


哦,看看这个:STM32的UART支持格式解读

使用特权

评论回复
5
香水城| | 2011-7-29 13:55 | 只看该作者
如果是8位数据再加1位奇偶检验位,应配置STM32端的UART为9位。

使用特权

评论回复
6
desomond| | 2011-7-29 14:31 | 只看该作者
奇偶校验位是包括在8bit或者9bit之内的

使用特权

评论回复
7
xiangxiaowei|  楼主 | 2011-7-29 14:42 | 只看该作者
仔细检查了一下,发现是上位机与程序校验方式不一致,疏忽了。。。

使用特权

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

本版积分规则

1

主题

30

帖子

1

粉丝