求大神看看为什么会出现这种情况!!!!!!!!!
程序是:#include <SoftwareSerial.h>
SoftwareSerial gps(0,1);
char data;
void setup()
{
Serial.begin(4800);
gps.begin(4800);
}
void loop()
{
if(gps.available() > 0)
{
data = gps.read();
Serial.print(data);
}
}
GPS是SIRF2 TTL接口的
这程序我用在UNO上面可以运行,用串口监视器软件能看到数据。但是用在MAGE2560上面编译能通过。但是不能运行。在串口监视器上看不到任何数据。GPS的TX接MAGE2560上的0(RX0)
为什么会出现这样的情况呢?按道理来讲,在UNO上能运行的,在MAGE2560上应该也能运行啊
不是所有的io口都可以rx的
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). 0,1是硬件串口吧,直接用就可以了,为什么还给定义成软件串口呢 i7456 发表于 2013-11-18 22:41 static/image/common/back.gif
0,1是硬件串口吧,直接用就可以了,为什么还给定义成软件串口呢
不知大神是否给改改这程序。我把SoftwareSerial这个函数去掉过。结果的确可以显示。但是复位开关不能按。一按GPS就不出数据了,如果再要运行,就必须把GPS的接口线抽掉,然后再按一下复位。然后接上去才能在读出来。我就在想是不是我编的程序有冲突程序如下:
int rxPin = 0; // RX
int txPin = 1; // TX
char data;
void setup()
{
Serial.begin(4800);
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
}
void loop()
{
if(Serial.available() > 0)
{
data = Serial.read();
Serial.print(data);
}
}
页:
[1]