MSP432学习笔记5——外部中断

news2025/4/27 17:44:25

所用单片机型号:MSP432P401r

今日继续我的MSP432电赛速通之路。

外部中断是个很有用的配置

STM32几乎每个I/O口都能配置复用为外部中断

但MSP432并不是这样。

我经过查阅数据手册发现支持中断的引脚为:

P1^0~ P1^7        P3^0~ P3^7     P5^0~ P5^7

P2^0~ P2^7        P4^0~ P4^7     P6^0~ P6^7

其余引脚都不包含中断功能(来源:msp432p401r.pdf  第17~20页


目录

外部中断相关库函数:

外部中断一般配置步骤:

完整工程下载:


外部中断相关库函数:

外部中断相关库函数1~5在gpio.h库中,6~5在interrupt.h库中

1.开启外部中断:

GPIO_enableInterrupt(GPIO_PORT_PX,GPIO_PINx);

2.配置触发方式:

GPIO_interruptEdgeSelect(GPIO_PORT_PX,GPIO_PINx,Edge);

 Edge表示触发方式

3.Edge有效值:

GPIO_HIGH_TO_LOW_TRANSITION  //下降沿触发
GPIO_LOW_TO_HIGH_TRANSITION  //上升沿触发

4.获取GPIO中断状态:

GPIO_getEnabledinterruptStatus(GPIO_PORT_Px);

5.清除GPIO中断标志位:

GPIO_clearInterruptFlag(GPIO_PORT_Px,GPIO_PINx);

配合使用:

//获取中断状态存在变量
status=GPIO_getEnabledInterruptStatus(GPIO_PORT_Px);
//然后在清除对应的中断标志位
GPIO_clearinterruptFlag(GPIO_PORT,status);

6.开启总中断:

Interrupt_enableMaster(void);

7.开启对应端口中断:

Interrupt_enableInterrupt(interruptNumber);
//interruptNumber可以填下面几个外部中断的参数之一

INT_PORT1
INT_PORT2
INT_PORT3
INT_PORT4
INT_PORT5
INT_PORT6

外部中断一般配置步骤:

1.配置GPIO输入
2.清除中断标志位
3.配置触发方式
4.开启外部中断
5.开启端口中断
6.开启总中断
7.编写GPIO ISR(中断服务函数)

让我们根据以上步骤进行如下俩个函数的编写:

首先是外部中断初始化函数:

/*
	中断初始化函数	
	一般在主函数while()循环之外调用一下	
*/

void interrupt_inint(void)
{
//1.配置GPIO输入 
MAP_GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1 + GPIO_PIN4);	
//2.清除中断标志位
MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN1);
MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, GPIO_PIN4);
	
//3.配置触发方式  //下降沿触发
GPIO_interruptEdgeSelect(GPIO_PORT_P1,GPIO_PIN1,GPIO_HIGH_TO_LOW_TRANSITION);
GPIO_interruptEdgeSelect(GPIO_PORT_P1,GPIO_PIN4,GPIO_HIGH_TO_LOW_TRANSITION);	
//4.开启外部中断
GPIO_enableInterrupt(GPIO_PORT_P1,GPIO_PIN1);
GPIO_enableInterrupt(GPIO_PORT_P1,GPIO_PIN4);	
//5.开启端口中断
Interrupt_enableInterrupt(INT_PORT1);	
//6.开启总中断
Interrupt_enableMaster();

}

然后就是对中断服务函数的编写:

首先我们找到启动文件看一下,这里有定义许多中断服务函数:

复制一下进行编写:

//7.编写GPIO ISR(中断服务函数)

void  PORT1_IRQHandler(void)
{
	uint16_t status;
	status=GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
	GPIO_clearInterruptFlag(GPIO_PORT_P1,status);
	GPIO_clearInterruptFlag(GPIO_PORT_P1,status);
	
	if(status & GPIO_PIN1)//对应KEY1中断
	{
		 delay_ms(15);    //消抖
			if(KEY1==0)	
			{
				LED_RED_On();
			}
		}

	if(status & GPIO_PIN4)
		//对应KEY2中断
	{
		 delay_ms(15);    //消抖
			if(KEY2==0)	
			{
				LED_RED_Off();
			}
		}		
		
}	

 该服务函数作用是打开和关闭LED

  如果有失败的情况,请检查自己:

1.对应LED端口有没有初始化,(1.LED初始化函数 2.开机调用初始化)

2.对应按键端口有没有初始化为输入模式

3.中断函数的编写是否是7步都做好了

4.开启对应端口中断函数填的是不是对应按键端口的初始化,

                (比如按键接在P1^1就是INT_PORT1)

完整工程下载:

https://download.csdn.net/download/qq_64257614/87802677

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python习题】Python课程设计的作业分小组完成得分计算(实现代码)

目录 题目思路分析代码实现效果总结 主要内容是校设课程的习题和课外学习的一些习题。 欢迎关注 『Python习题』 系列,持续更新中 欢迎关注 『Python习题』 系列,持续更新中 题目 【题目描述】Python课程设计的作业分小组完成,规定小组成员1…

​Shodan新手入坑指南​

什么是 Shodan? 首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎不同,Shodan 是用来搜索网络空间中在线设备的,你可以通过 Shodan 搜索指定的设备,或者搜索特定类型的设备,其…

【C++】结构体 - 定义和使用,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体const

文章目录 1. 定义和使用2. 结构体数组3. 结构体指针4. 结构体嵌套结构体5. 结构体做函数参数6. 结构体const 1. 定义和使用 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。 struct 结构体 {结构体成员列表}; 通过结构体创建变量的方法有三种&…

读数据压缩入门笔记02_二进制和熵

1. 十进制 1.1. 现代数学建立在十进制计数系统之上 2. 二进制 2.1. 二进制计数系统的工作原理与十进制计数系统一样,唯一的区别是前者的基数为2,而后者的基数为10 2.2. 数据压缩所做的就是尽可能减少表示特定数据集时所需的二进制位数量 2.3. 给定任…

WASender - Whatsapp server and bulk sender

WASender 是一个 whatsapp 营销平台,它使用 Laravel 和 Node Js 构建。WhatsApp 是世界上最受欢迎的消息应用程序之一,拥有超过 20 亿活跃用户。这使其成为企业接触潜在客户并与现有客户群互动的有吸引力的平台。WASender 客户可以创建多个设备来向他的目…

NLP基础知识(语法语义、LDA、N-gram、词嵌入)

文章目录 本节课大纲Hyper-simplified linguisticsTerm spotting handling negation, uncertaintyML to expand termspre-NN ML to identify entities and relationsLatent Dirichlet Allocation (LDA)Statistical Models of Language: Zipfs lawvector space embeddings base…

Office project 2016安装

哈喽,大家好。今天一起学习的是project 2016的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…

【WebLogic】WebLogic 14c服务器实例报BEA-001112的排查和解决

一、问题背景 WebLogic 14c配置了 MySQL 数据源(数据库使用的是MySQL的开源版本 - MariaDB),数据源其中一个 Target 为 WebLogic 应用域的一个受管服务器实例 - appServer1,并且为了增强 WebLogic JDBC Pool 里面的数据库连接的可…

NIO之FileChannel解读

目录 基本概述 打开 FileChannel 从 FileChannel 读取数据 向 FileChannel 写数据 关闭 FileChannel FileChannel 的 position 方法 FileChannel 的 size 方法 FileChannel 的 truncate 方法 FileChannel 的 force 方法 FileChannel 的 transferTo 和 transferFro…

华为OD机试真题B卷 Java 实现【寻找峰值】,附详细解题思路

一、题目描述 给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。 1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于; 2.假设 nums[-1] n…

齿轮齿条平动模组的制作

1. 运动功能说明 齿轮齿条平动模组的主要运动方式为直流电机带动2个齿轮沿着齿条平行方向前进、后退。 2. 结构说明 本模组主要是由直流电机、齿轮、齿条、光轴、滑块、机架等组成。 3. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考&#xff1…

Fiddler抓不到包Fiddler chrome Edge无法抓包原因排查Fiddler死活抓不了包

一、问题描述 我这电脑上的Fiddler莫名其妙的死活就是无法抓包,换了几个版本的Fiddler都没有解决,这里参考了一些网上的教程,最终解决了,该文章算是比较详细的一篇介绍Fiddler无法抓包的教程。无法抓包主要由以下原因导致的&#…

1726_使用Python从dbc文件中提取simulink建模数据定义

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 使用dbc文件建模完成CAN通讯是一种比较高效的开发模式,不过在建模的过程中dbc文件中描述的数据需要自己去定义。使用文本编辑工具打开dbc文件可以看到&#xff0c…

中国生物科技公司【Advanced Biomed】申请纳斯达克IPO上市

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于台湾台南的生物科技公司【Advanced Biomed】近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为(AD…

git的本地分支如何关联远程分支,比如github,gitlab,码云等

文章目录 1. 文章引言2. 本地分支如何关联远程分支2.1 远程有分支2.2 远程无分支 3. 总结 1. 文章引言 今天发布某版本的项目,准备创建个v0point1分支,后期如果修改该版本,直接在该分支上修改即可。 首先,使用git branch v0point…

SeaFormer实战:使用SeaFormer实现图像分类任务(一)

文章目录 摘要安装包安装timm安装mmcv安装 grad-cam 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文翻译:https://blog.csdn.net/m0_47867638/article/details/130437649?spm1001.2014.3001.5501 官方源码:https://github.com/fu…

Vue2 创建 Vite 项目,新手教学

关于vite Vite是一种快速的现代化构建工具,可以显著提高Web应用程序的开发效率和性能。 以下是一些Vite的好处: 快速的冷启动:Vite使用原生ES模块解析器,在冷启动时会非常快速,不需要像Webpack一样构建整个应用程序。…

Linux输入输出重定向

目录 Linux输入输出重定向 Linux中的默认设备 输入输出重定向定义 输入输出重定向操作符 实用形式 标准输入、标准输出、标准错误 输出重定向案例 案例1 --- 输出重定向(覆盖) 案例2 --- 输出重定向(追加) 案例3 --- 错误…

chatgpt赋能python:Python中向上取整函数详解

Python中向上取整函数详解 对于Python中的向上取整运算,大家一定不会感到陌生。在FPython中,我们通常使用math.ceil()函数来对数值进行向上取整。本文将为大家详细介绍Python中的向上取整函数,以及如何在实践中应用。 什么是向上取整&#…

被黑客攻击了?无所谓,我会拔网线。。。

「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 最近老是有粉丝问我,被黑客攻击了,一定要拔网线吗?还有…