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的状态翻转。

克隆空白工程请使用 git , 如果你觉得还不错欢迎点亮 star !

git clone https://github.com/YGZone/Design-a-car-with-MSP432P401R.git

更多资料可以转步我的个人网站 www.eestr.com ( https://www.eestr.com)或者 Github[https://github.com/YGZone], 欢迎访问

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YGZone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值