本帖最后由 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)
{
}
}
|