0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

华芯微特MCU的嵌套向量中断控制器与外部中断/事件控制器的使用方法

电子工程师 来源:华芯微特32位MCU 作者:华芯微特32位MCU 2021-06-04 12:08 次阅读

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的中断连接至指定中断编号。具体使用参考中断配置模块。

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。并将引脚外部中断打开。具体配置函数如下所示:

b59feb96-c4c6-11eb-9e57-12bb97331649.jpg

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

b5c45cd8-c4c6-11eb-9e57-12bb97331649.jpg

04.

实验现象

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

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22441

    浏览量

    645831
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8647

    浏览量

    361725
  • 控制器
    +关注

    关注

    112

    文章

    15184

    浏览量

    171075
  • 函数
    +关注

    关注

    3

    文章

    3860

    浏览量

    61303
  • NVIC
    +关注

    关注

    0

    文章

    35

    浏览量

    11513

原文标题:华芯微特小课堂--MCU之EXTI

文章出处:【微信号:gh_ed4f95bde4df,微信公众号:华芯微特32位MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AT32F系列PWC USART接收唤醒SLEEP的使用方法

    演示AT32F系列 PWC USART接收唤醒SLEEP的使用方法。通常任意一个被嵌套向量中断控制器响应的外设中断都能将系统从SLEEP模式
    发表于 10-27 06:13

    STM32学习笔记一外部中断

    STM32 的每个 IO 都可以作为外部中断中断输入口。STM32F103 的中断控制器支持 19 个外部
    的头像 发表于 10-24 14:12 673次阅读
    STM32学习笔记一<b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    PLIC平台级中断控制器介绍

    的。 U54内核的平台级中断控制器 (PLIC) 最多可支持 132 个具有 7 个优先级的外部中断源。 Memory Map U54 内核 PLIC 控制寄存器的内存映射如表 105
    的头像 发表于 10-07 17:53 678次阅读
    PLIC平台级<b class='flag-5'>中断控制器</b>介绍

    AXI中断控制器(INTC)v4.1简介

    LogiCORE™ IP AXI中断控制器(INTC)内核接收来自外围设备的多个中断输入,并将它们合并到或中断输出到系统处理器。
    的头像 发表于 10-07 11:45 894次阅读
    AXI<b class='flag-5'>中断控制器</b>(INTC)v4.1简介

    中断控制器级联的类型有哪几种

    中断控制器的级联 根据中断数量的不同,中断控制器可以级联,以此来满足需求。比如在 GIC 中断控制器之前都会连接 EINT中断控制器,或者其
    的头像 发表于 09-28 14:15 370次阅读
    <b class='flag-5'>中断控制器</b>级联的类型有哪几种

    LPC800前生今世 第三章-嵌套向量中断控制器

    嵌套向量中断控制器 NVIC: Nested Vectored Interrupt Controller 中断是所有的 M CU 都必须具备的功能,由于非常重要的地位, ARM 公司
    的头像 发表于 09-21 11:55 514次阅读
    LPC800前生今世 第三章-<b class='flag-5'>嵌套</b>式<b class='flag-5'>向量</b><b class='flag-5'>中断控制器</b>

    将GICv2中断控制器与ARM Cortex-A5x和Cortex-A72处理集成

    CPU接口,以通过AXI4流接口连接到外部中断分配器组件。 此类中断分配器组件基于ARM通用中断控制器体系结构规范3.0版(GICv3)。 GICv3体系结构规范解决了旧的GIC体系
    发表于 08-23 07:21

    AMBA中断控制器数据表

    中断控制器中断系统提供简单的软件接口。 某些中断位是为任何系统中所需的基本功能定义的,而其余位可供任何特定实现中的其他设备使用。 在ARM系统中,可以使用两种级别的中断: ·用于快速
    发表于 08-21 06:08

    AMBA 3 TrustZone中断控制器(SP890)技术概述

    TrustZone中断控制器(TZIC)是一款高级微控制器总线架构(AMBA)兼容的片上系统(SoC)外围设备,由ARM有限公司开发、测试和授权。 TZIC为TrustZone设计中的安全中断系统
    发表于 08-21 06:07

    ARM CoreLink GIC-500通用中断控制器技术参考手册

    GIC-500是一个构建时可配置的中断控制器,最多支持128个内核。GIC-500仅支持实现ARMv8架构的内核,以及具有标准GIC流协议接口的GIC CPU接口,如Cortex®-A57和Cortex-A53。它实现了ARM®通用中断控制器体系结构规范3.0版、GIC体
    发表于 08-02 14:02

    PrimeCell矢量中断控制器(PL190)技术参考手册

    VIC是一款符合高级微控制器总线体系结构(AMBA)的片上系统(SoC)外围设备,由ARM开发、测试和许可。 VIC为中断系统提供接口,并通过两种方式改善中断延迟: •将中断控制器移至
    发表于 08-02 13:57

    ARM CoreLink GIC-600通用中断控制器参考手册

    ARM CoreLink GIC-600通用中断控制器参考手册
    发表于 08-02 12:32

    Arm通用中断控制器GICv3和GICv4对虚拟化的支持

    本指南描述了GICv3和GICv4体系结构中对虚拟化的支持。它涵盖了管理程序可用于生成和管理虚拟中断的控件。指南是对于任何需要了解中断控制器功能的人来说编写软件来管理虚拟中断。 本指南描述了
    发表于 08-02 10:43

    PrimeCell通用中断控制器(PL390)技术参考手册

    前言这是PrimeCell通用中断控制器(PL390)的TRM。通用中断控制器(GIC)是一种可配置的中断控制器,支持单处理或多处理系统
    发表于 08-02 06:23

    STM32CUBEIDE(14)----外部中断EXTI

    外部中断和事件控制器 (EXTI) 管理外部和内部异步事件 / 中断,并生成相应的事件请求到CPU/
    的头像 发表于 07-26 14:33 950次阅读
    STM32CUBEIDE(14)----<b class='flag-5'>外部</b><b class='flag-5'>中断</b>EXTI