在while(1){}的循环中,无论是接收还是发送。第一次循环的收发数据都是错的,此后的循环均正确。比如:PC一个字符一个字符的发送0x01,0x02,0x03,接收到3个字符MCU就发回来,但第1次循环接收到是错误数据0x40,0xA0,0xE0,此后再循环收发均正确。。。百思不得其解,在while(1)循环内还会出这种问题?
代码如下:
病症如下:
-----------------------------------------------------------------------------------------------------------------------------------
上电后:
此时已经能看出问题了,想想看。
-----------------------------------------------------------------------------------------------------------------------------------
发送0x01:
-----------------------------------------------------------------------------------------------------------------------------------
发送0x02:
-----------------------------------------------------------------------------------------------------------------------------------
发送0x03:
-----------------------------------------------------------------------------------------------------------------------------------
症状:
-----------------------------------------------------------------------------------------------------------------------------------
再发0x01:
-----------------------------------------------------------------------------------------------------------------------------------
再发0x02:
-----------------------------------------------------------------------------------------------------------------------------------
再发0x03:
看到这,我想应该知道问题出现在哪了吧?哈哈。
-----------------------------------------------------------------------------------------------------------------------------------
分析:
用IO口模拟串行通讯,串口通讯的起始位用低电平0表示,停止位用高电平1来表示。在没有进行数据收发的时候,要使TXD保持高电平,以便能识别出特发数据的起始位。解决办法是,上电初始化时,使TXD引脚为高电平。
-----------------------------------------------------------------------------------------------------------------------------------
病好了: