MSP432(Keil5)——2.按键及外部中断驱动

本文档介绍了一个使用MSP432P4XX微控制器进行外部中断按键实验的过程。实验中,通过配置P1.1和P1.4口作为输入并启用中断,当按键被按下时,会切换板载LED灯的状态。代码展示了如何初始化GPIO端口,设置中断,并在端口1的中断服务函数中处理按键事件。
摘要由CSDN通过智能技术生成

在这里插入图片描述

本次按键实验是采用了板载的两个按键分别对应的P1.1与P1.4口,具体迁移到其他IO口的外部中断请移步原理图。

实验现象:按下按键会翻转板载LED灯状态。

key.c

#include "key.h"


void Key_Init(void)
{
	/* Configuring P1.1 as an input and enabling interrupts */
	
	/*配置1.1口为上拉输入*/
    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);
	/*清除IO口的中断标志位*/
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);
	/*使能P1.1的外部中断(这里只是一个引脚)*/
    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1);
	/*使能P1端口的中断(这里是一个大端口,包括多个引脚)*/
    MAP_Interrupt_enableInterrupt(INT_PORT1);
	
	/* Configuring P1.4 as an input and enabling interrupts */
    MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN4);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN4);
    MAP_GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN4);
    MAP_Interrupt_enableInterrupt(INT_PORT1);
	
}


/* GPIO ISR */
/*端口1中断处理函数*/
void PORT1_IRQHandler(void)
{
    uint32_t status;

    status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);

    /* Toggling the output on the LED */
    /*检测到P1.1产生外部中断的处理*/
    if(status & GPIO_PIN1)
    {
        MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
    }
	
	if(status & GPIO_PIN4)
	{
		MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
	}

}



key.h

#ifndef __KEY_H
#define __KEY_H

/* DriverLib Includes */
#include <ti/devices/msp432p4xx/driverlib/driverlib.h>

void Key_Init(void);


#endif

需要注意的一点是,只有这几个端口能产生外部中断(查阅库函数手册)
在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值