STM8S105 按键长短按 实现不了
时间:10-02
整理:3721RD
点击:
独立按键实现长短功能,为什么实现不了。大家帮我看看。
void delay_ms(uint16_t nCount)
{
while(nCount--)
{
delay_us(1000);
}
}
void main(void)
{
CLK_Config();
GPIO_Config();
//EXTI_Config();
//TIM1_Config();
//TIM2_Config();
//TIM4_Config();
//enableInterrupts();
while (1)
{
if(GPIO_ReadInputPin(KEY_PORT,KEY_PIN))//按键一
{
keyflag=1;
delay_ms(100);//延迟消抖
if(GPIO_ReadInputPin(KEY_PORT,KEY_PIN))
{
while(GPIO_ReadInputPin(KEY_PORT,KEY_PIN))//等待释放
{
for(y=0;y<100;y++);
x++;//计算按键时间
}
if(x<10&&!keyflag)//短按
{
GPIO_WriteHigh(LED3_PORT,LED3_PIN);
//GPIO_WriteReverse(LED3_PORT,LED3_PIN);
}
else if(x>50&&!keyflag)//长按
{
GPIO_WriteHigh(LED4_PORT,LED4_PIN);
delay_ms(500);
GPIO_WriteLow(LED4_PORT,LED4_PIN);
}
}
}
}
}
void delay_ms(uint16_t nCount)
{
while(nCount--)
{
delay_us(1000);
}
}
void main(void)
{
CLK_Config();
GPIO_Config();
//EXTI_Config();
//TIM1_Config();
//TIM2_Config();
//TIM4_Config();
//enableInterrupts();
while (1)
{
if(GPIO_ReadInputPin(KEY_PORT,KEY_PIN))//按键一
{
keyflag=1;
delay_ms(100);//延迟消抖
if(GPIO_ReadInputPin(KEY_PORT,KEY_PIN))
{
while(GPIO_ReadInputPin(KEY_PORT,KEY_PIN))//等待释放
{
for(y=0;y<100;y++);
x++;//计算按键时间
}
if(x<10&&!keyflag)//短按
{
GPIO_WriteHigh(LED3_PORT,LED3_PIN);
//GPIO_WriteReverse(LED3_PORT,LED3_PIN);
}
else if(x>50&&!keyflag)//长按
{
GPIO_WriteHigh(LED4_PORT,LED4_PIN);
delay_ms(500);
GPIO_WriteLow(LED4_PORT,LED4_PIN);
}
}
}
}
}
X使用完,没有清零吧?