stm32用按键控制led灯,如果k1按键产生高电平,让led1发光二极管亮,k2按键产生的是低电平,让led2发光二极管亮,理论是这样的,但是我的却是k1按下,led1不亮,k2按下,led2亮,k1,k2都按下,led1才会亮,这是为什么呢?
代码应该没问题
int main(void){ LED_GPIO_Config(); KEY_GPIO_Config(); GPIO_SetBits(GPIOEGPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5); while(1) { if(KEY_Scan(KEY1_GPIO_PORTKEY1_GPIO_PIN) == KEY_ON) { GPIO_ResetBits(GPIOEGPIO_Pin_4); } else if(KEY_Scan(KEY2_GPIO_PORTKEY2_GPIO_PIN) == KEY_OFF) { GPIO_ResetBits(GPIOEGPIO_Pin_2);
} }}
/*****KEY_Scan()函数******/
uint8_t KEY_Scan(GPIO_TypeDef* GPIOxuint16_t GPIO_Pin)
{ if( GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_ON ) { while(GPIO_ReadInputDataBit(GPIOxGPIO_Pin) == KEY_ON); return KEY_ON; } else return KEY_OFF;}
换了一个GPIO检测低电平,出现的问题更多了,我都开始怀疑是板子的问题了
看程序、看原理图
无图无真相