msp432快速入门第六节之按键扫描和GPIO中断操作

(一)按键扫描

(1)配置引脚

在按键扫描这一节,仅需要配置好引脚即可,打开TI的GPIO驱动库,可以看到GPIO设置函数H文件如下: 在这个函数上方有对函数的说明: 解释为:该函数配置MSP432的GPIO引脚为输入模式,没有指明被配置的引脚是否被上拉或者下拉,当然如果需要配置输入上拉或者输入下拉需要使用此函数配置: 在这里我们直接使用普通配置,配置引脚为输入即可。 如下进行引脚初始化:(板载两个按键,一左一右均可以使用,注意复位键是在上面的)

//key pin init
void Key_Init(void)
{
          
   
	GPIO_setAsInputPinWithPullUpResistor(KEY_LEFT_PORT,KEY_LEFT_PIN);
	GPIO_setAsInputPinWithPullUpResistor(KEY_RIGHT_PORT,KEY_RIGHT_PIN);
}

(2)按键扫描,消抖,确认

在这里使用最简单的办法扫描按键: C文件

//simple key scan 
uint8 Key_Scan(void)
{
          
   
	if(KEY_LEFT == 0)
	{
          
   
		delay_ms(5);
		if(KEY_LEFT == 0)
			return KEY_LEFT_PRESS;
	}
	else if(KEY_RIGHT == 0)
	{
          
   
		delay_ms(5);
		if(KEY_RIGHT == 0)
			return KEY_RIGHT_PRESS;
	}
	
	//
	return 0;
}

H文件

#define KEY_LEFT_PORT		GPIO_PORT_P1
#define KEY_LEFT_PIN 		GPIO_PIN1
#define KEY_LEFT			GPIO_getInputPinValue(KEY_LEFT_PORT,KEY_LEFT_PIN)
#define KEY_LEFT_PRESS		1

#define KEY_RIGHT_PORT 		GPIO_PORT_P1
#define KEY_RIGHT_PIN 		GPIO_PIN4
#define KEY_RIGHT			GPIO_getInputPinValue(KEY_RIGHT_PORT,KEY_RIGHT_PIN)
#define KEY_RIGHT_PRESS		2

在扫描函数中使用delay_ms进行消抖,防止误判 主函数中检测到按键按下配置LED为相应状态: LED在前一节写完后就直接封装成了宏,便于调用,这样按键扫描就完成了!

(二)按键中断

(1)配置GPIO模式以及中断

在这里我们需要配置PORT1的中断,注意的是在这个函数中已经配置好引脚:

//key int init 
//!中断函数需要自己在isr.c中注册
void Key_Int_Init(void)
{
          
   
	//配置引脚
	GPIO_setAsInputPinWithPullUpResistor(KEY_LEFT_PORT,KEY_LEFT_PIN);
	//配置中断
	GPIO_clearInterruptFlag(KEY_LEFT_PORT, KEY_LEFT_PIN);
	GPIO_enableInterrupt(KEY_LEFT_PORT, KEY_LEFT_PIN);
	//开启GPIO_PORT中断
	Interrupt_enableInterrupt(INT_PORT1);
	//使能总中断控制器
	Interrupt_enableMaster();
}

(2)中断函数注册,下载启动

我们需要注册中断函数,在.s文件中我们可以看到注册的函数为: 那么我们需要只用这个中断函数名注册中断:

/* GPIO ISR */
void PORT1_IRQHandler(void)
{
          
   
    uint32_t status;

    status = GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
    GPIO_clearInterruptFlag(GPIO_PORT_P1, status);

    /* Toggling the output on the LED */
    if(status & GPIO_PIN1)
    {
          
   
        LED_TOGGLE;
    }
}

注意:在进入中断函数时需要立刻清除引脚中断状态,否则中断会一直进行进而卡死单片机。 下载完成后的正常现象是:按下按键P1.1后红色LED的状态翻转。

经验分享 程序员 微信小程序 职场和发展