大哥们好。
小弟用lpc2364画了个板子。用h-jtag调试程序可正确运行。可是一掉电重启后,发现程序没有完全烧进去。详细情况如下:
程序的功能是接收串口的程序,并根据接收的内容进行相应的处理。串口uart0设为接收中断。接收到数据后进入irq_uart0中断服务程序,然后判断接收的第一个字节,进入相应的要处理的内容的程序后,再判断第二个字节,然后执行相应处理程序,并把接收的数据回送到pc。这在h-jtag在debuginflash下实现了功能。但断电重启后,发现程序只判断了接收的第一个直接,然后根本不判断第二字节。请问这是什么原因啊?
结合程序再说明一下:
这是uart0接收到数据后的一小段处理程序:
if(Rcv_Buf[0]==0x43)
{
switch(Rcv_Buf[1])
{
case 0x30:
{
LCDDisP("SCREEN PV =0000V");
FIO2PIN0=(FIO2PIN0&0xf3)|0x00;
} break;
case 0x33:
{
LCDDisP("SCREEN PV =3500V");
FIO2PIN0=(FIO2PIN0&0xf3)|0x04;
} break;
case 0x34:
{
LCDDisP("SCREEN PV =4500V");
FIO2PIN0=(FIO2PIN0&0xf3)|0x0c;
} break;
default: LCDDisP("SCREEN PV =0000V");break;
IO1SET=LED1;
}
在h-jtag调试时,发送“C3”或"C4"均能在LCD显示"SCREEN PV =3500V“或"SCREEN PV =4500V“,且能回送正确的“C3”或"C4",P2口的输出也正确。LED亮。现在用单步操作,可以进入相应判断了。这种h-jtag调试下,功能还是正确实现了的。
但断电重启后,
1、发送“C3”或"C4"能回送正确的“C3”或"C4"给pc(实现了uart0接收中断)。
2、led灯亮(证明进入了if(Rcv_Buf[0]==0x43)判断)。
3、lcd无显示,P2口无响应输出。(没有进入switch(Rcv_Buf[1])判断?)。
百思不得其解,为什么用h-jtag全速运行时功能运行正确,而掉电重启后,只能实现部分功能?
叩请大虾们不吝赐教,指点迷津。。小弟不胜感激。。 |