打印

求助:一个编译器的问题...

[复制链接]
1786|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fu10|  楼主 | 2007-12-13 10:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  偶最近做了一个板子,用LPC2148做的,编了一个非常小的程序去点亮一个LED灯,编译时发现一个问题,用"P0XSET=0x80000000;"代替"P0XCLR=LED;",以及用"P0XSET=0x80000000;"代替"P0XSET=LED;"就能把灯点亮,并且可以一闪一闪的,如果调过来的话就没发点亮LED灯.并且用DELAY()去延时的话,如何改P0XSET和P0XSET都没效果,但编译生成BIN文件过程和AXD的调试过程都成功,没报错的.我是用非利浦的LPC210X_ISP.EXE下载BIN文件的,一直弄不清问题在哪,请大侠们高抬贵手,救小弟一把,非常感谢!!源程序就是下面的
//**************init.s******************
    IMPORT        Main
    AREA        Init, CODE, READONLY
    ENTRY
    LDR    SP, =0x40001ff0          ;SP指向4K SRAM的尾地址    BL        Main
    END
//********************************



//**************Main.c***************** #define PINSEL1 (*(volatile unsigned *)0xE002C004)//管脚功能选择寄存器//
#define  P0XDIR (*(volatile unsigned *)0xE0028008)//端口0方向择寄存器//
#define  P0XSET (*(volatile unsigned *)0xE0028004)//端口0位设置寄存器//
#define  P0XCLR (*(volatile unsigned *)0xE002800C)//端口0位清除寄存器//
//#define  IOPDATA (*(volatile unsigned *)0x3FFFC007) //IO port data register
  #define      uchar          unsigned char
  #define      unum32         unsigned long           
  void Delay(unsigned int);
  int Main()
     {
       unsigned long  LED,cl;
//       IOPMOD=0xFFFFFFFF;       //将IO口置为输出模式
       PINSEL1=0x00000000;      //将IO口置为GIO模式
       P0XDIR=0xffffffff;       //将IO口置为输出模式
       FP0XDIR=0xffffffff;      //将IO口置为输出模
//       IOPDATA=0x01;   
       LED=0x80000000;    
       while(1){
                 P0XCLR=LED; <<-------改为P0XSET=0x80000000;就能点亮
//                P0XCLR=0x80000000;
                 for(cl=50000;cl>0;cl--);  //延时
//                Delay(100); 
                  P0XSET=LED; <<-------改为P0XSET=0x80000000;就能点亮
//                P0XSET=0x80000000;
                 for(cl=50000;cl>0;cl--);  //延时
//                Delay(100);
               }
       return(0);    
     }
  
  
  void Delay(unsigned int x)    //延时
          {
              unsigned int i,j,k;
              for(i=0;i<=x;i++)
                  for(j=0;j<0xff;j++)
                     for(k=0;k<0xff;k++);
          }
//******************************



相关帖子

沙发
fu10|  楼主 | 2007-12-13 11:24 | 只看该作者

等ing

请大家看看,问题在哪?我对C不是很了解,只好请教大伙..

使用特权

评论回复
板凳
阿南| | 2007-12-13 13:12 | 只看该作者

将"unsigned long LED"修改成"unsigned int LED"试一下

使用特权

评论回复
地板
FU10| | 2007-12-13 17:59 | 只看该作者

多谢阿南!

明天有事可能试不了,下星期回去试试,不管怎样,先多谢阿南的建议.

使用特权

评论回复
5
fu10|  楼主 | 2007-12-17 09:53 | 只看该作者

唉,找到旧问题,又出新问题...

 原来在BL  MAIN前加上
             LDR    R0, =0x3FF0000 
         LDR    R1, =0xE7FFFF80          
             STR    R1, [R0]    
  就可以了,但又出了个奇怪的问题,重新上电后要过一分多钟才能正常工作,晕~~令我百思不解的是:上面的是4510片子寄存器SYSCFG的配置指令,为何能在LPC2148上能用?因为LPC2148没有SYSCFG寄存器啊(查过2148手册)!

使用特权

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

本版积分规则

9

主题

222

帖子

1

粉丝