这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » LPC2200,GPIO LPC2200的GPIO口问题?

共2条 1/1 1 跳转至

LPC2200,GPIO LPC2200的GPIO口问题?

院士
2006-09-17 18:14:16     打赏
LPC2200,GPIO LPC2200的GPIO口问题?



关键词: LPC2200     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问     最近调试程序老出现一个不确定的问题,发现GPIO P0口的一个问题,我调试液晶显示,USB传输,怎么P0.17,0.18.0.20.0.23,0.24,0.25口的输入输出会出现时而可以输出,时而有不可以,我单独调试这段程序也会,而P2口的GPIO口设置一样但是不会出现这种情况;   该段程序如下:


for (;;)
    {
           OSSemPend(Con_Sem, 0, &err);        //等待TaskWrite的命令
           {
           
           I2cInit(200000);
        Init_I2CInt();
           for(i=0;i<16;i++)duandian_buff[i]=0xdd;
        Write_CAT1025(CAT1025,50,8,duandian_buff);
        Read_CAT1025(CAT1025,50,8,cont);
              
        DsInit();
        PINSEL1=(PINSEL1&0xf3ffffff);//设置0.29为GPIO
        PINSEL1=(PINSEL1&0xfffffff3)|0x04;//设置P0。17为捕获
        
        IO0DIR=LEDCON;

/*#define     LEDCON   0X239E0000;  
0010 0011 1001 1110 0000 0000 0000 0000  
设置P0.18.,0.19,0.20,0.23,0.24,0.25口输出并控制相应的
LED,输出低电平时LED亮
#define     LEDCON1 0X007F0000;  //    0111 1011   
设置P2口的几位LED*/


        IO2DIR=LEDCON1;
             IO2SET=LEDCON1;
             IO0DIR=LEDCON;
        IO0SET=LEDCON;//灭P0口LED
         for(i=0;i<8;i++)
            {   if(rbuff[i]==i)
                {
                IO0CLR|=DISP_TAB[i];         //该段程序有时控制LED
                delayns(50);}          //有时候不会控制,当然满足
                else;                  //if语句的条件下;DISP_TAB[i]
             }                        //中的数据也没有问题
        
         for(i=0;i<=5;i++)      
             {  if(rbuff[i+7]==(i+7))
                {
                IO2CLR=0;
                IO2CLR|=DISP_TAB1[i];      //这段程序控制P2口的LED不
                delayns(50);             //出现上面的问题
                }
             
             }  
          for(i=0;i<8;i++)
             {
             dat_buff[0]=i;          //这段程序控制P0口的LED也不会
             IO0DIR=LEDCON;          //出现问题
             IO0SET=LEDCON;
             IO0CLR=DISP_TAB[i];
             delayns(200);
             }     
        T1TCR&=0x00;       
        for(i=0;i<16;i++)duandian_buff[i]=0x11;
        Write_CAT1025(CAT1025,50,8,duandian_buff);      
               
        }



如果把有问题段改写成
            IO2DIR=LEDCON1;
             IO2SET=LEDCON1;
              for(i=0;i<8;i++)
            {   if(rbuff[i]==i)
                {
                IO0DIR=LEDCON;
           IO0SET=LEDCON;//灭P0口LED

                IO0CLR|=DISP_TAB[i];         
                delayns(50);}         
                else;                  
             }                       
P0口的GPIO 没有问题(满足if语句时每个LED都会亮一下),但是想让这几个LED逐个亮起,直到全部亮就实现不了

请问各位这个问题怎么解决!!!!我看了勘误表,也没有这个勘误信息啊!!!
1: 保护没?io其他的管脚保护没,例如ioset2|=0x10000000;
不保护可能出现这个问题 2: 已经试过我两种方法都试过,还是出现这种不可随心控制的局面,都有点怀疑lpc2200了

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]