一、
本文实现的功能是在MDK环境下,编程实现按键输入状态检测,按键按下点亮LED,按键再次按下熄灭LED。从PICO开发板的原理图知板载绿色LED连接在GPIO25引脚上,为高电平驱动点亮。板载按键为用作BOOT处理,在PICO运行期间也可以用作普通按键使用。从原理图可以看出按键按下为接地,由于电阻R11存在造成按键按下会使QSPI_SS端为高电平,此时PICO的56编号引脚输入电平为高电平。
二、
PICO GPIO输入结构说明
对按键输入电平检测,则需要将端口引脚设置为输入模式
检测原理是在程序中不断循环检测按键所在输入引脚的电平状态,检测到输入电平为高说明此时按键按下。另外,从原理图中可以看到按键没有采取硬件消抖措施,因此程序当中可以加入软件消抖处理以减小按键抖动造成的异常电平检测。
三、
示例程序源码:
int main(void) { system_init(); gpio_init(PICO_DEFAULT_LED_PIN); gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); uint8_t led_on=0; while(true){ if(get_bootsel_button()==1){ delay_ms(10); //延时10ms再检测按键状态,为软件消抖 if(get_bootsel_button()==1){ led_on=!led_on; gpio_put(PICO_DEFAULT_LED_PIN,led_on); printf("Key Pressed.\n"); while(get_bootsel_button()); //wait for button release. } } } }
四、
运行效果