大家好,
小弟我做了一个很简单的协议转换模块,就是从串口2输入一串数据,比如说 0x01, 0x02, 0x03, 0x04.
然后转成另外一组数据从串口1输出,比如说0x05, 0x06, 0x07, 0x08;
刚开始程序一切正常,串口2的中断响应,串口1的数据发送都没有问题。
定时不定时往串口2输入数据,都能从串口1获得相应输出。
后来在程序里加了两个数组,类似与下面的定义:
unsigned char idata Data_Array_1[]={0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
unsigned char idata Data_Array_2[]={0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}
之后,程序似乎就不正常了。
串口2只能响应一次数据输入,第二次再往串口2送数据后,从串口1就再得不到任何输出;
从调试的情况看,似乎当第二次往串口2送数据的时候,串口2的中断函数都没有响应;
但是只要把这两行数组定义注释掉之后,程序运行又恢复正常。
以前也遇到类似的问题,都采取别的方式绕过去了,这次打算打破沙锅问到底,不搞明白不罢休了。
有没有哪位高手指点一下,感激不尽。
|