这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » ADI » MAX32662EVKIT 按键输入检测

共6条 1/1 1 跳转至

MAX32662EVKIT 按键输入检测

助工
2025-02-17 20:50:11     打赏

1、简介

以下介绍美信开发板实现按键输入检测的方法,基本思路是将按键连接的引脚设置为输入模式,不断轮询引脚的输入电平,如果为低电平表示按键按下。该按键电路没有上拉处理,可以通过软件编程设为内部弱上拉。

image.png

评估板的用户按键连接在P0_6引脚上

2、输入引脚初始化

void GPIO_PIN_Init(mxc_gpio_regs_t * gpio_port,uint32_t gpio_pin,mxc_gpio_func_t gpio_pin_mode){
    mxc_gpio_cfg_t gpio_cfg;
    gpio_cfg.port=gpio_port;//port assigned 输出端口
    gpio_cfg.mask=gpio_pin; //pin assigned,or pins assigned 引脚
    gpio_cfg.pad=MXC_GPIO_PAD_PULL_UP;//pin pull up/down,pull up default 下拉
    gpio_cfg.func=gpio_pin_mode;      //pin mode 引脚工作模式
    gpio_cfg.vssel=MXC_GPIO_VSSEL_VDDIO;/**< Voltage select */
    gpio_cfg.drvstr=MXC_GPIO_DRVSTR_0;
    MXC_GPIO_Config(&gpio_cfg);
}

 按照前述引脚配置,对按键IO做以下初始化

GPIO_PIN_Init(MXC_GPIO0,MXC_GPIO_PIN_6,MXC_GPIO_FUNC_IN);

以下实现按键检测逻辑,不断轮询按键的输入状态

int main(void)
{
GPIO_PIN_Init(MXC_GPIO0,MXC_GPIO_PIN_6,MXC_GPIO_FUNC_IN);
while(1){
     if(!MXC_GPIO_InGet(MXC_GPIO0,MXC_GPIO_PIN_6)){
             printf("Key pressed.\n");
             while(!MXC_GPIO_InGet(MXC_GPIO0,MXC_GPIO_PIN_6)){}
         }
         else{
 
         }
}
}

3、实验结果

评估板按键按下结果

image.png

按键按下一次LED1状态翻转

int main(void)
{
	GPIO_PIN_Init(MXC_GPIO0,MXC_GPIO_PIN_14,MXC_GPIO_FUNC_OUT);
	GPIO_PIN_Init(MXC_GPIO0,MXC_GPIO_PIN_6,MXC_GPIO_FUNC_IN);
	while(1){
	     if(!MXC_GPIO_InGet(MXC_GPIO0,MXC_GPIO_PIN_6)){
	    	 printf("Key pressed.\n");
	    	 MXC_Delay(500);
	    	 MXC_GPIO_OutToggle(MXC_GPIO0, MXC_GPIO_PIN_14);
	    	 while(!MXC_GPIO_InGet(MXC_GPIO0,MXC_GPIO_PIN_6)){}
	         }
	         else{

	         }
	}
}

screenshots.gif





关键词: MAX32662EVKIT 按键检测    

专家
2025-02-17 21:11:25     打赏
2楼

感谢分享


专家
2025-02-17 21:13:07     打赏
3楼

感谢分享


专家
2025-02-17 21:20:04     打赏
4楼

感谢分享


菜鸟
2025-02-18 08:51:56     打赏
5楼

感谢分享


专家
2025-02-18 09:03:39     打赏
6楼

谢谢分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]