本次按键实验是采用了板载的两个按键分别对应的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 void Key_Init(void); #endif 需要注意的一点是,只有这几个端口能产生外部中断(查阅库函数手册)
上一篇:MSP432(Keil5)——3.delay延时驱动
下一篇:MSP432(Keil5)——1.LED驱动
推荐阅读最新更新时间:2024-11-06 13:57
设计资源 培训 开发板 精华推荐
- PI自研氮化镓助力实现更小、更轻、更高效的充电器 看视频好礼送!
- 寻宝大冒险,搜索有好礼!
- 【新年活动】2023,兔 do list!
- ADI有奖直播:储能系统助力电动汽车快充站的建设 8月31日上午10:00-11:30 为您揭晓!
- 预约有礼:预约理想配电网络的电源完整性设计等直播,涨知识赢好礼
- DSP-Sitara精品课上线,礼品、开发板等你拿!
- 报名赢【挂灯、浴巾】等好礼|TI MSPM0家用电器和电机控制应用详解
- ADI有奖直播:储能系统助力电动汽车快充站的建设 8月31日上午10:00-11:30 为您揭晓!
- TE助力数据中心设计,缩短你与奥运的距离,猜猜它属于哪个“奥运场馆”赢大礼!
- 全球首款Cortex-M23内核物联网芯片SAML10和SAM L11系列 闯关获取SAML10/SAML11法宝,拆除电子界安全危机,赢好礼!