打印

用lpc2364设计的板子,调试成功,但下载不能实现全部功能

[复制链接]
1657|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
metalwjf|  楼主 | 2010-6-7 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 metalwjf 于 2010-6-8 21:29 编辑

大哥们好。
小弟用lpc2364画了个板子。用h-jtag调试程序可正确运行。可是一掉电重启后,发现程序没有完全烧进去。详细情况如下:

程序的功能是接收串口的程序,并根据接收的内容进行相应的处理。串口uart0设为接收中断。接收到数据后进入irq_uart0中断服务程序,然后判断接收的第一个字节,进入相应的要处理的内容的程序后,再判断第二个字节,然后执行相应处理程序,并把接收的数据回送到pc。这在h-jtag在debuginflash下实现了功能。但断电重启后,发现程序只判断了接收的第一个直接,然后根本不判断第二字节。请问这是什么原因啊?


结合程序再说明一下:

这是uart0接收到数据后的一小段处理程序:

   if(Rcv_Buf[0]==0x56)
             {      
                   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调试时,发送“V3”或"V4"均能在LCD显示"SCREEN PV =3500V“或"SCREEN PV =4500V“,且能回送正确的“V3”或"V4",P2口的输出也正确。LED亮。但是用单步操作时,无法单步进入switch(Rcv_Buf[1])语句,错误是can't set 。。这种h-jtag调试下,功能还是正确实现了的。
但断电重启后,
1、发送“V3”或"V4"能回送正确的“V3”或"V4"给pc(实现了uart0接收中断)。
2、led灯亮(证明进入了if(Rcv_Buf[0]==0x43)判断)。
3、lcd无显示,P2口无响应输出。(没有进入switch(Rcv_Buf[1])判断?)。


百思不得其解,为什么用h-jtag全速运行时功能运行正确,而掉电重启后,只能实现部分功能?

加一个问题。。

我有几个数据口要用到输入输出的功能。就先置输出,然后再接受数据。能否通过以下方法实现?
IODIR设为输出 => 输出数据=> IODIR设为输入 => 接收数据 ??








叩请大虾们不吝赐教,指点迷津。。小弟不胜感激。。

相关帖子

沙发
metalwjf|  楼主 | 2010-6-8 14:11 | 只看该作者
有没有兄弟回答一下啊?

郁闷啊,,自己顶!!

使用特权

评论回复
板凳
metalwjf|  楼主 | 2010-6-8 20:42 | 只看该作者
再自定

使用特权

评论回复
地板
metalwjf|  楼主 | 2010-6-8 20:43 | 只看该作者
再自顶。。。:'(

弄了好久还是不见进展。。好灰心啊。。

使用特权

评论回复
5
wxw2000| | 2010-6-9 11:31 | 只看该作者
有几个数据口要用到输入输出的功能。就先置输出,然后再接受数据。能否通过以下方法实现?
IODIR设为输出 => 输出数据=> IODIR设为输入 => 接收数据 ??
----------------------
可以,但是要确保输出数据后,接收端已经收到数据。可能需要一定的延时

使用特权

评论回复
6
wxw2000| | 2010-6-9 11:43 | 只看该作者
单步操作时,无法单步进入switch(Rcv_Buf[1])语句,错误是can't set 。。
=================================
是指设置断点调试吗?用debug in ram调试方法试试、

断电重启lcd无显示,P2口无响应输出。应该是没进入switch(Rcv_Buf[1])判断。
有可能串口中断后数据Rcv_Buf[1]还没收到

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝