STM32F103系列的单片机怎么实现一个按键控制一个LED,第一次按下常亮,再次按下闪烁,第三次按下熄灭?

2019-07-21 05:52发布


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
尹默然
2019-07-21 20:50
我试过了,用计数的方式是可以解决了但需要把
   if (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2) == KEY_ON)
给改掉
用着个结构给先处理下端口的取值问题
        u8 Key_Scan(GPIO_TypeDef* GPIOx,u16 GPIO_Pin)
{                       
                /*¼ì2aêÇ·ñóD°′¼ü°′Ï */
           if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )
          {          
                  /*Ñóê±Ïû¶¶*/
                  Delay(50000);               
                           if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON )  
                                        {         
                                                /*μè′y°′¼üêí·Å */
                                                while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON);   
                                                 return         KEY_ON;         
                                        }
                        else
                                        return KEY_OFF;
                }
        else
                return KEY_OFF;
}
改为
if (Key_Scan(GPIOC,GPIO_Pin_2) == KEY_ON)
最终是这个主程序
//                                if (Key_Scan(GPIOC,GPIO_Pin_2) == KEY_ON)
//                                {
//                                        Delay(1000000);
//                                        status=status+1;
//                                }               
//                                        if(status>2)
//                                        {
//                                                status=0;
//                                        }
//                                                if (status==0)
//                                                {

//                                                        {GPIO_SetBits(GPIOC, GPIO_Pin_1);}
//                                                }
//                                                if (status==1)
//                                                {
//                                                        {GPIO_ResetBits(GPIOC, GPIO_Pin_1);}
//                                                }
//                                                if (status==2)
//                                                {
//                                                        {GPIO_ResetBits(GPIOC, GPIO_Pin_1);
//                                                                                                                                                Delay(1000000);
//                                                         GPIO_SetBits(GPIOC, GPIO_Pin_1);
//                                                                                                                                                Delay(500000);}                                                       
//                                                }
但现在我想把这写东西给做成一个可调用的形式
只需要把输入端口一写,然后进行计数的判断。
改成主函数如下
//                                                if (任意端口==0)
//                                                {

//                                                        {GPIO_SetBits(GPIOC, GPIO_Pin_1);}
//                                                }
//                                                if (任意端口==1)
//                                                {
//                                                        {GPIO_ResetBits(GPIOC, GPIO_Pin_1);}
//                                                }
//                                                if (任意端口==2)
//                                                {
//                                                        {GPIO_ResetBits(GPIOC, GPIO_Pin_1);
//                                                                                                                                                Delay(1000000);
//                                                         GPIO_SetBits(GPIOC, GPIO_Pin_1);
//                                                                                                                                                Delay(500000);}                                                       
//                                                }

一周热门 更多>