打印
[STM32]

求大神帮助 按键扫描 程序出问题

[复制链接]
1115|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lifeisamaze|  楼主 | 2014-8-11 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问  我的按键扫描  为什么每次只能扫描出来一个  扫描另一个就没用  需要reset  但是每次只是第一个按键有用  
int main(void)
{

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  GPIO_Configuration();
for(;;)
{
if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)==0)        
   
     {  CCR1_Va1=10   ;
        //         TIM3_GPIO_Config();
            //  TIM3_Mode_Config() ;
          PWM();
                 
     }
   if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4)==0)  
      
        {
                      CCR1_Va1=15;       
                 //TIM3_GPIO_Config();
             // TIM3_Mode_Config() ;
          PWM();
               
               }       
    if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5)==0)
       {
   
                CCR1_Va1=20;
                // TIM3_GPIO_Config();
              //TIM3_Mode_Config() ;
          PWM();
                 
              }
}
}

相关帖子

沙发
ayb_ice| | 2014-8-11 16:08 | 只看该作者
你这是什么扫键程序,只是读个IO而已

另外PWM函数是否有返回,多久返回

使用特权

评论回复
板凳
lifeisamaze|  楼主 | 2014-8-11 16:51 | 只看该作者
ayb_ice 发表于 2014-8-11 16:08
你这是什么扫键程序,只是读个IO而已

另外PWM函数是否有返回,多久返回

PC5 PC13 PC4  就是接的按键上的IO 口啊   不能检测按键吗 ?   
void GPIO_Configuration(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_13;               
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                                 
  GPIO_Init(GPIOC, &GPIO_InitStructure);
}

void TIM3_GPIO_Config(void)       
{
        GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;  
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOA,&GPIO_InitStructure);
        }
void TIM3_Mode_Config(void)
{
  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  TIM_OCInitTypeDef  TIM_OCInitStructure;

  TIM_TimeBaseStructure.TIM_Period = 199;
  TIM_TimeBaseStructure.TIM_Prescaler = 719;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
        TIM_OCInitStructure.TIM_Pulse=CCR1_Va1;
  TIM_OC1Init(TIM3,&TIM_OCInitStructure);

  TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
  TIM_Cmd(TIM3,ENABLE);
        }

void PWM(void)
{       
        TIM3_GPIO_Config();
                TIM3_Mode_Config();
        while(1)
        {}
}       
程序是这样的

使用特权

评论回复
地板
lifeisamaze|  楼主 | 2014-8-11 16:58 | 只看该作者
ayb_ice 发表于 2014-8-11 16:08
你这是什么扫键程序,只是读个IO而已

另外PWM函数是否有返回,多久返回

大神 现在的情况是 在开发板上 每次下载之后只能检测一个按键 舵机就转 第二个按键按下 它就不转了 。。。。。。。然后 Reset之后  才能检测另外的  但是也只能检测到一个。。。

使用特权

评论回复
5
ayb_ice| | 2014-8-11 17:19 | 只看该作者
lifeisamaze 发表于 2014-8-11 16:58
大神 现在的情况是 在开发板上 每次下载之后只能检测一个按键 舵机就转 第二个按键按下 它就不转了 。。 ...

你在PWM函数里不出来了,当然检测不到其它按键了

使用特权

评论回复
6
lifeisamaze|  楼主 | 2014-8-11 20:15 | 只看该作者
ayb_ice 发表于 2014-8-11 17:19
你在PWM函数里不出来了,当然检测不到其它按键了

啊  那要怎么才能出来?

使用特权

评论回复
7
ayb_ice| | 2014-8-12 07:58 | 只看该作者
lifeisamaze 发表于 2014-8-11 20:15
啊  那要怎么才能出来?

你那里有个while(1){}

你还问我,程序不是你写的

使用特权

评论回复
8
lifeisamaze|  楼主 | 2014-8-12 16:43 | 只看该作者
ayb_ice 发表于 2014-8-12 07:58
你那里有个while(1){}

你还问我,程序不是你写的

谢谢 大神  初学者  

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝