小兵1912 发表于 2013-4-19 16:18:33

msp430f149 单片机间uart通信 主从间握手的问题

主机(M),从机(S)。按照现有的通信协议,M向S发送8字节的数据包P,S在收到P后会立即回复握手H。
我想把从机回复的握手H,写入M的内存,后续程序会读取这条H的8个字节。数据包的格式有特殊的字头(head)和字尾(tail)。现在为了保证M和S间每次握手后,M的缓冲内存里能够按照预期有序的接收H的8个字节,我在M的8个uart0接收中断后,用下面的伪代码保证可靠的接受:

while(!(字头 == head &&字尾 == tail)) {
      发送数据包P;
      延时10毫秒;//在这里设想,给从机S回复预留足够的时间,并让主机M进8次有效的接收中断
                //主机M的接收中断服务程序中,依次向内存中写入H的八个字节
}
主机M处理从机S发来的H;

这样写我个人觉得没什么问题,可现在程序写到开发板上后,有时能达到我预期的效果。但是更多时候从串口调试工具里观察单片机好像是突然间崩溃了,PC机的窗口里看到主机M极快速的(周期10ms?)发送数据包P的数据。

是不能按这样的方式在430单片机里写还是这种方式本身就有问题?

uart相关寄存器配置部分之前已经用简单的程序验证过,应该没什么问题,波特率是9600。
页: [1]
查看完整版本: msp430f149 单片机间uart通信 主从间握手的问题