芯课堂 | MCU之EXT

news2025/6/8 16:14:18

    

概述

本文将介绍一下华芯微特MCU的嵌套向量中断控制器(NVIC)与外部中断/事件控制器(EXTI)的使用方法等。

01.嵌套向量中断控制器(NVIC)

NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。

Cortex-M0和Cortex-M4提供了“嵌套向量中断控制器(NVIC)”用以管理中断事件。其中M0和M4提供的中断优先级及个数不一致,为了让您更加简单的使用这一功能,下面小编将以SWM190为例,给大家展示如何使用SWM系列产品的NVIC。

SWM190系列32位MCU(以下简称SWM190)内嵌ARM® CortexTM-M0内核,其中断优先级分为4级,可通过中断优先级配置寄存器(IRQn)进行配置。

特性

l  4位中断优先级

l  支持嵌套和向量中断

l  硬件完成现场的保存和恢复

l  动态改变优先级

l  确定的中断时间

l  可屏蔽中断

在中断发生时,内核比较中断优先级,并自动获取入口地址,并保护现场,将指定寄存器中数据入栈,此过程无需软件参与。中断服务程序结束后,由硬件完成出栈工作。同时支持“尾链”模式及“迟滞”模式,有效的优化了中断发生及背对背中断的执行效率,提高了中断的实时性。嵌套向量中断控制器管理着包括核异常等中断。关于更多的异常和NVIC编程的说明请参考SWM190数据手册及M0权威指南。

02.外部中断/事件控制器(EXTI)

EXTI的全程是External interrupt/event controller,即外部中断/事件控制器,管理了控制器的32个中断/事件线。每个中断/事件线都对应一个电平或者边沿检测,电平检测支持高电平/低电平检测;边沿检测包括上升沿/下降沿/双边沿触发。

EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。

SWM190提供了32个中断供外设与核交互,其排列如表格 1所示。可以通过中断配置模块,将任意模块或具体IO的中断连接至指定中断编号。具体使用参考中断配置模块。

表格 1 中断编号及对应外设

图片

03.SWM190 EXTI功能配置库函数

下面我们以最简单的按键输入为例,用外部中断的方法实现按键控制。在此例程中,我们将A4设为按键输入引脚,A5设为输出引脚,外接LED灯,通过按键翻转LED的状态来观察现象。

我们之前有讲到GPIO的配置方法,在这里就不在做赘述,将按键引脚通过GPIO_Init函数设为上拉输入,并与外部按键电路连接,将LED输出引脚通过GPIO_Init设置为输出,与外部LED引脚相连。然后进行外部中断配置:

在SWM190固件库中对外部中断的配置进行了说明,下面将根据库函数对SWM190的EXTI配置,首先来看一下EXTI_Init函数的原型void EXTI_Init(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t mode)。这个函数的实现是在SWM190_exti.c文件中,若要使用该函数在相应的应用程序的前面包含SWM190_exti.h头文件。

函数的第一个参数为GPIO_ TypeDef,它是一个结构体类型,该类型在SWM190_gpio.h中被定义。具体参数为指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD、GPIOE;

第二个参数为uint32_t n指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15;

第三个参数为uint32_t mode,为EXTI触发方式配置,有效值包括EXTI_FALL_EDGE(下降沿触发中断)、EXTI_RISE_EDGE(上升沿触发中断)、EXTI_BOTH_EDGE(双边沿触发中断)、EXTI_LOW_LEVEL(低电平触发中断)、EXTI_HIGH_LEVEL(高电平触发中断);

配置GPIO中断引脚后,需要使能NVIC,将对应中断线连接至NVIC。并将引脚外部中断打开。具体配置函数如下所示:

图片

接下来我们看下中断服务子函数,中断服务子函数与上面配置的外部中断线相对应,在中断服务函数中我们清中断并进行LED的翻转。

04.实验现象

下载好程序后,按下按键时LED点亮,再按下按键时LED熄灭,如此循环。

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

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

相关文章

行政法学-第十二/十三章:司法审查

章节章节汇总第一章:绪论第二章:行政法的基本原则第三章:行政法律关系主体第四章:行政行为概述第五章:抽象行政行为第六/七章:依申请/依职权的具体行政行为第八章:特殊类型的行政行为第九章&…

ModuleNotFoundError: No module named ‘numpy.testing.decorators‘

文章目录 报错信息报错原因解决方案 关注公众号:『AI学习星球』 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或➕v:codebiubiubiu滴滴我 报错信息 ModuleNotFoundError: No module named numpy.testing.decorators 报错原因 新版本已经去…

利用GitHub开源项目ChatGPTNextWeb构建属于自己的ChatGPT - Docker

Docker部署ChatGPTNextWeb ChatGPTNextWeb项目github开源地址:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 根据文档部署ChatGPTNextWeb 文档地址:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/blob/main/README_CN.md 步骤一&#…

AI:109-基于机器学习的文本图像关联分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

牛顿法和拟牛顿法介绍

最优化笔记,主要参考资料为《最优化:建模、算法与理论》 文章目录 一、经典牛顿法(1) 迭代格式(2)收敛性 二、拟牛顿法(1) 割线方程(2) BFGS公式(…

csdn查看积分的方法(最快)

我在浏览别人“资源”的时候,发现需要积分下载。下面分享最快查看积分的方法,非常简单。 在个人主页,选择任意一篇文章。最左边会显示积分(如果不在主页,点击上面的csdn头像会跳到首页)。如图:…

耳机声音变小了?意味你的耳机需要清洁了,两步教你快速清洁耳机

前两天觉得华为FreeBuds SE 2的声音有点小,于是准备调大一点,却收到手机的弹窗提示“耳机音量超出推荐值”的伤耳提示。 这其实是耳机的通病——长时间的佩戴使用,使得灰尘、耳垢、汗水在耳机的出音孔和泄音孔形成污垢。简单来说&#xff0c…

iPhone强制恢复出厂设置,记好这2种方法!

随着智能手机的广泛普及,如今有越来越多的人开始使用iPhone手机。但是,在使用的过程中,我们可能会遇到各种问题,比如程序崩溃、软件故障、系统运行缓慢等等。 此时,恢复出厂设置成为了一种解决问题的有效方法。本文将…

test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍

测试覆盖率 测试覆盖率(test coverage)是衡量软件测试完整性的一个重要指标。掌握测试覆盖率数据,有利于客观认识软件质量,正确了解测试状态,有效改进测试工作。 当然,要发挥这些作用,前提是我们掌握了真实的测试覆盖…

RT-DETR Gradio 前端展示页面

效果展示 使用方法 Gradio 是一个开源库,旨在为机器学习模型提供快速且易于使用的网页界面。它允许开发者和研究人员轻松地为他们的模型创建交互式的演示,使得无论技术背景如何的人都可以方便地试用和理解这些模型。使用Gradio,你只需几行代码就可以生成一个网页应用程序,…

Nat Med | 多组学神经病理学在儿科神经肿瘤学中提高了诊断准确性

导语 今天给同学们分享一篇实验文章“Multiomic neuropathology improves diagnostic accuracy in pediatric neuro-oncology”,这篇文章发表在Nat Med期刊上,影响因子为82.9。 结果解读: 患者招募和样本处理 在为期4年的时间内&#xff08…

【Java】log4j和slf4j区别

log4j:Apache Software Foundation 开源 slf4j:不支持日志滚动等高级功能 在开源库或内部库中使用 SLF4J,将使其独立于任何特定的日志记录实现,这意味着无需为多个库管理多个日志记录配置,您的客户端将会很需要这一点…

prometheus grafana mysql监控配置使用

文章目录 前传bitnami/mysqld-exporter:0.15.1镜像出现了问题.my.cnf可以用这个"prom/mysqld-exporter:v0.15.0"镜像重要的事情mysql监控效果外传 前传 prometheus grafana的安装使用:https://nanxiang.blog.csdn.net/article/details/135384541 本文说…

Mac——VsCode使用格式化工具进行整理和格式化

1. 打开VSCode编辑器。 2. 点击左下角⚙️图标,打开设置 3. 进入设置后,你会看到一个搜索框,在搜索框中输入 format on save 来查找相关设置项。 4. 在设置列表中找到 Editor: Format On Save 选项,勾选它以启用在保存文件时自动格…

炼石白小勇:免改造技术“多快好省”落地数据安全

现代数字化企业已然成为持续演变和进化的数字生命体,其架构复杂性的爆炸性增长,正加速形成企业内部数字化基因的代差积累。如何在数字基因动态演进的过程中实现原生安全范式,是网络安全行业面临的共同挑战。在此背景下,新一轮网络…

一文掌握文本语义分割:从BERT切分、Cross-Segment到阿里SeqModel

前言 之所以写本文,源于以下两点 在此文《基于LangChainLLM的本地知识库问答:从企业单文档问答到批量文档问答》的3.5节中,我们曾分析过langchain-chatchat项目中文本分割相关的代码,当时曾提到该项目中的文档语义分割模型为达摩…

用CHAT写一简单的C语言线程池的示例

问CHAT&#xff1a;编写一个简单的C语言线程池的示例 CHAT回复&#xff1a;在C语言中&#xff0c;实现线程池需要手动创建线程和管理任务队列。以下是一个简单的C语言线程池的示例&#xff1a; c #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 …

2023年12月青少年机器人技术等级考试(一级)理论综合试卷

2023年12月青少年机器人技术等级考试&#xff08;一级&#xff09;理论综合试卷 题目总数&#xff1a;45 总分数&#xff1a;100 单选题 第 1 题 单选题 如图&#xff0c;使用下列物品时哪个是费力杠杆&#xff1f;&#xff08; &#xff09; A. a B. b C. c D…

【银行测试】银行项目-系统性能测试总结(最详细汇总)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、需求分析 1&a…

FBL刷写

刷写 1、刷写需求的理解2、刷写流程2.1、预编程阶段&#xff1a;保证在编程阶段的动作能够正常操作&#xff0c;控制器给响应。整车功能不会出现问题 刷写某一控制器时&#xff0c;避免其他控制器集DTC,85控制DTC&#xff1b; 28 通信控制.保证总线负载率不要过高&#xff08;下…