在点灯代码的基础上进行修改
可以看到,配置的输出模式为推挽输出,我理解的推挽输出的意思是,推出去(高电平)和挽回来(低电平)的输出模式,即输出高低电平的一种模式,在这里用来点灯,高电平亮。
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP;//推挽输出
配置的输入模式为上拉输入,我的理解为,默认状态下是接了个电阻到vcc,即没有输入的时候是高电平(1),配置为上拉输入的话,按键另外一头就应该要接gnd,这样的话,当按键被按下时,就能输入一个低电平(0)信号。
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_INPUT;//输入模式
GPIO_InitStructure.GPIO_Pull = GPIO_PULL_UP;//上拉输入
所以判断方式也是获取按键对应的io口,判断是否为低电平,就可以知道按键有没有被按下了
if((GPIO_Input_Pin_Data_Get(GPIOA,GPIO_PIN_4);)==0);
当按键被按下时,可以执行一些效果来观察,这里我用led1被按下就翻转状态来观察
PIO_Pin_Toggle(GPIOA,GPIO_PIN_1);
最后,看效果
可以观察到,每次按下key1状态就会翻转一次,但是发现不太稳定,存在按键抖动现象,这里应该在按键判断时做延时处理
最后,尝试将各个板块封装起来
模块化编程有利于代码的整洁和可阅读性
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_INPUT;//输入模式
GPIO_InitStructure.GPIO_Pull = GPIO_PULL_UP;//上拉输入
GPIO_Input_Pin_Data_Get(GPIOx,GPIO_pin x);//获取引脚输入数据