单片机按键高低电平问题

[复制链接]
 楼主| 两只袜子 发表于 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;     //键盘释放
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2122

主题

8124

帖子

11

粉丝
快速回复 返回顶部 返回列表