芯课堂 | MCU之EXT

    

概述

本文将介绍一下华芯微特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.mzph.cn/news/594761.shtml

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

相关文章

普中STM32-PZ6806L开发板(HAL库函数实现-温度传感器DS18B20)

简介 主芯片STM32F103ZET6, 通过引脚PG11 连接DS18B20, 读取DS18B20采集的温度数据;电路原理图 DS18B20电路图 DS18B20 与 主芯片连接引脚 其他知识 DS18B20资料 DS18B20数据手册 DS18B20 简介 单线通讯的温度传感器, 测量温度在-55℃ 到 125℃, 在-10C 到…

平衡二叉树,力扣

目录 前序遍历与后续遍历 题目地址: 题目: 我们直接看题解吧: 审题目事例提示: 解题方法: 难度分析: 解题方法分析: 解题分析: 解题思路: 代码实现: 补充说明…

【每日论文阅读】生成模型篇

联邦多视图合成用于元宇宙 标题: Federated Multi-View Synthesizing for Metaverse 作者: Yiyu Guo; Zhijin Qin; Xiaoming Tao; Geoffrey Ye Li 摘要: 元宇宙有望提供沉浸式娱乐、教育和商务应用。然而,虚拟现实(VR)在无线网络上的传输是…

【UEFI基础】EDK网络框架(通用函数和数据)

通用函数和数据 DPC DPC全称Deferred Procedure Call。Deferred的意思是“延迟”,这个DPC的作用就是注册函数,然后在之后的某个时刻调用,所以确实是有“延迟”的意思。DPC在UEFI的实现中包括两个部分。一部分是库函数DxeDpcLib,…

数字IC设计——数字电路基本元器件

现代数字集成电路基本由CMOS晶体管构成,而CMOS门电路由PMOS场效应管和NMOS场效应管以对称互补的形式组成,所谓“互补”,即利用互补型MOSFET,即pMOS和nMOS,二者成对出现构成互补电路。 这种电路具有高的电路可靠性和抗干…

Mysql show Profiles详解

1.简介 show profile 和 show profiles 命令用于展示SQL语句的资源使用情况,包括CPU的使用,CPU上下文切换,IO等待,内存使用等,这个命令对于分析某个SQL的性能瓶颈非常有帮助,借助于show profile的输出信息&…

力扣hot100 二叉树的直径

👨‍🏫 题目地址 一个节点的最大直径 它左树的深度 它右树的深度 😋 AC code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* Tr…

[Android]RadioButton控件

RadioButton控件 RadioButton控件是单选按钮控件,它继承自Button控件,可以直接使用Button控件支持的各种属性和方法。 与普通按钮不同的是,RadioButton控件多了一个可以选中的功能,能额外指定一个android:checked属性…

手机视频监控客户端APP如何实现跨安卓、苹果和windows平台,并满足不同人的使用习惯

目 录 一、手机视频监控客户端的应用和发展 二、手机视频监控客户端存在的问题 三、HTML5视频监控客户端在手机上实现的方案 (一)HTML5及其优点 (二)HTML5在手机上实现视频应用功能的优势 四、手机HTML5…

【数据结构】循环队列(数组实现)

目录 一、循环队列定义 怎么使一个数组在逻辑上呈“环状”呢? 二、循环队列与顺序队列的差异 1、存储方式: 2、操作方式: 3、空间利用率: 4、循环队列判断队空的方式: 5、循环队列判断队满的方式 完整测试代码及注释: 总…

axure RP9.0安装字体图标库fontawesome

字体图库地址: Font AwesomeThe internets icon library toolkit. Used by millions of designers, devs, & content creators. Open-source. Always free. Always awesome.https://fontawesome.com/v6/download进入后下载想要的版本如我是6.3 下载后得到压缩包,解压之后…

机器学习笔记 - 从2D数据合成3D数据

一、3D 数据简介 人们一致认为,从单一角度合成 3D 数据是人类视觉的一项基本功能,这对计算机视觉算法来说极具挑战性。但随着 LiDAR、RGB-D 相机(RealSense、Kinect)和 3D 扫描仪等 3D 传感器的可用性和价格的提高,3D 采集技术的最新进展取得了巨大飞跃。 与广泛使用的 2D…

Mybatis-Plus乐观锁配置使用流程【OptimisticLockerInnerInterceptor】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 1.乐观锁实现 1.配置插件 1.XML方式 <bean class"com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerI…

C# .Net 开发设计多用户网上商城源码_OctShop

随着C#在TIOBE编程语言排行不断上升&#xff0c;这也标志着越来越多的程序员开始使用C#来开发项目了。在TIOBE2023年10月公布的排行中&#xff0c;C#和Java之间的差距越来越小了&#xff0c;仅为1.2%&#xff0c;随着C# .NetCore的免费开源&#xff0c;这一上升的趋势越来越明显…

MySQL视图特性

目录 视图概念基本使用创建视图修改视图会影响基表修改基表会影响视图删除视图 视图规则和限制 视图概念 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变…

Python 编写代码的工具-交互式环境

交互式环境意思就是我们输入一行代码&#xff0c;按回车&#xff0c;代码就会立马执行并产生结果和显示在窗口中。 要打开Python交互式环境&#xff0c;具体操作如下&#xff08;win系统&#xff09;&#xff1a; 键盘WINR&#xff0c;再输入指令“cmd”,就可以打开命令提示符…

win下持续观察nvidia-smi

简介&#xff1a;在Windows操作系统中&#xff0c;没有与Linux中watch命令直接对应的内置工具&#xff0c;但有1种方法快速简单的方法可以实现类似的效果&#xff0c;尤其是用于监控类似于nvidia-smi的命令输出。 历史攻略&#xff1a; Python&#xff1a;查看windows下GPU的…

数据库攻防学习之MySQL

MySQL 0x01mysql学习 MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统&#xff0c;它具有客户机/服务器体系结构的分布式数据库管理系统。可以免费使用使用&#xff0c;用的人数很多。 0x02环境搭建 这里演示用&#xff0c;phpstudy搭建的…

华为端口隔离高级用法经典案例

最终效果&#xff1a; pc4不能ping通pc5&#xff0c;pc5能ping通pc4 pc1不能和pc2、pc3通&#xff0c;但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…

基于SSM的校园快递管理系统

目录 前言 开发环境以及工具 项目功能介绍 学生&#xff1a; 管理员&#xff1a; 详细设计 获取源码 前言 本项目是一个基于IDEA和Java语言开发的基于SSM的校园快递管理系统应用。应用包含学生端和管理员端等多个功能模块。 欢迎使用我们的校园快递管理系统&#xff01;我…