打印

菜鸟问个问题///GPIOC->ODR

[复制链接]
4740|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
johnnyqyun|  楼主 | 2008-8-25 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
英的板子,好久没弄了。汗。。

#define left          0x0001         // PE0 : left

===============================
if((GPIOE->IDR & left)==0)
      {
          delay(100);
        if((GPIOE->IDR & left)==0)
        {
        while(!(GPIOE->IDR & left) )
            {
            GPIOC->ODR=0x0000;
            }
        }         
      }
      GPIOC->ODR=0x0200;
===============================
单个按键么问题,但是如果我把摇杆其他的都放进去后,GPIOC->ODR相对应的修改,发现LED的灯位置会变化。

按LEFT,变成GPIO_Pin_7 的LED亮   ((u16)0x0080

这个问题,额,有人帮忙看下吗?
                         
沙发
johnnyqyun|  楼主 | 2008-8-25 16:28 | 只看该作者

全部的如下

 while (1)  
  {
      
      if((GPIOE->IDR & left)==0)
      {
          delay(100);
        if((GPIOE->IDR & left)==0)
        {
            
        
        
            while(!(GPIOE->IDR & left) )
            {
                       GPIOC->ODR=0x0000;
            }

        }
         
      }
      GPIOC->ODR=0x0200;
                                 // Loop forever    
                                                
      if((GPIOE->IDR & right)==0)
      {
          delay(100);
        if((GPIOE->IDR & right)==0)
        {
            
        
        
            while(!(GPIOE->IDR & right) )
            {
                       GPIOC->ODR=0x0000;
            }

        }
         
      }
      GPIOC->ODR=0x0040;
                                 // Loop forever
   if((GPIOD->IDR & up)==0)
      {
          delay(100);
        if((GPIOD->IDR & up)==0)
        {
            
        
        
            while(!(GPIOD->IDR & up) )
            {
                       GPIOC->ODR=0x0000;
            }

        }
         
      }
      GPIOC->ODR=0x0100;
                                 // Loop forever        

      if((GPIOD->IDR & down)==0)
      {
          delay(100);
        if((GPIOD->IDR & down)==0)
        {
            
        
        
            while(!(GPIOD->IDR & down) )
            {
                       GPIOC->ODR=0x0000;
            }

        }
         
      }
      GPIOC->ODR=0x0080;
                                 // Loop forever

    

          }



如果单独分开,一个个按键修改的话,没问题,一一对应。但放在一起,就会错位。

使用特权

评论回复
板凳
香水城| | 2008-8-25 17:18 | 只看该作者

请把程序按层次对齐缩进关系,自然就看出问题了

使用特权

评论回复
地板
john_light| | 2008-8-25 17:21 | 只看该作者

<--------<===<

while (1)  
{
    if((GPIOE->IDR & left)==0)
    {
        delay(100);
        if((GPIOE->IDR & left)==0)
        {
            while(!(GPIOE->IDR & left) )
            {
                GPIOC->ODR=0x0000;
            }

        }

    }
    GPIOC->ODR=0x0200;
    // Loop forever    

    if((GPIOE->IDR & right)==0)
    {
        delay(100);
        if((GPIOE->IDR & right)==0)
        {
            while(!(GPIOE->IDR & right) )
            {
                GPIOC->ODR=0x0000;
            }

        }

    }
    GPIOC->ODR=0x0040;
    // Loop forever
    if((GPIOD->IDR & up)==0)
    {
        delay(100);
        if((GPIOD->IDR & up)==0)
        {
            while(!(GPIOD->IDR & up) )
            {
                GPIOC->ODR=0x0000;
            }

        }

    }
    GPIOC->ODR=0x0100;
    // Loop forever        

    if((GPIOD->IDR & down)==0)
    {
        delay(100);
        if((GPIOD->IDR & down)==0)
        {
            while(!(GPIOD->IDR & down) )
            {
                GPIOC->ODR=0x0000;
            }

        }

    }
    GPIOC->ODR=0x0080;
    // Loop forever
}

使用特权

评论回复
5
johnnyqyun|  楼主 | 2008-8-25 18:31 | 只看该作者

:)

谢谢。 自己再看下。

使用特权

评论回复
6
johnnyqyun|  楼主 | 2008-8-26 09:41 | 只看该作者

再询问一下

谢谢LS的。

还是C不过关啊。  :(

使用特权

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

本版积分规则

13

主题

115

帖子

1

粉丝