打印

单片机按键高低电平问题

[复制链接]
3848|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2021-8-31 15:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)==Bit_RESET)                                //开关机按键
         {
                  power_on = 1;
                        GPIO_SetBits(GPIOB, GPIO_Pin_14);
                  GPIO_SetBits(GPIOC, GPIO_Pin_1);
                        delay_ms(50);
                        GPIO_ResetBits(GPIOC,GPIO_Pin_1);                                         
         }
if ((GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)==Bit_SET) &(power_on == 1))
         {
                 delay_ms(50);
                   if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)==Bit_RESET)
                         {
                                  GPIO_ResetBits(GPIOB, GPIO_Pin_14);
                      power_off = 1;
                         }
         }
单片机的单独按键控制,只能输出高电平,不能输出低电平

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2021-8-31 16:14 | 只看该作者
&-->&&

使用特权

评论回复
板凳
一事无成就是我| | 2021-8-31 18:25 | 只看该作者
void key_scanf()
{  //该函数可以采用定时4ms一次进入,该参数以4ms为基准,有按下和释放祛痘
        static uint8_t  key_process = 0;

        key_process ++;     //下面的10是检测次数,保证16~30ms内,长按键另取数  sumber = 6, 根据时间长短改变设置
        if(key_process < sumber) {if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2) == 1) key_process = 0;}  //按键去抖5×4 = 20ms
        else if(key_process == sumber)
        {
                if(power_on == 0) {power_on = 1; GPIO_SetBits(GPIOB, GPIO_Pin_14);}  //开机,至于你的1口延时脉冲另行处理
                else            {power_on = 0; GPIO_ResetBits(GPIOB, GPIO_Pin_14);}  //关机
        }
        else if(key_process < (sumber+20))                                       //键盘释放去抖
            {if(if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2) == 0) key_process = sumber;}
        else  key_process = 0;     //键盘释放
}

使用特权

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

本版积分规则

2001

主题

7028

帖子

10

粉丝