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

评估板的用户按键连接在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、实验结果
评估板按键按下结果

按键按下一次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{
}
}
}
我要赚赏金
