2_Apollo4BlueLite中断控制器NVIC

这篇具有很好参考价值的文章主要介绍了2_Apollo4BlueLite中断控制器NVIC。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概述

Apollo4BlueLite 的中断控制器是采用 ARM Cortex-M4 内核,并集成了 NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)作为其中断控制器。

NVIC 是 ARM Cortex-M 系列处理器中常用的中断控制器,它具有以下基本特征和功能:

(1)中断优先级和优先级分组:NVIC 支持配置和管理中断的优先级,可以根据需求将不同的中断分配到不同的优先级组中。这样可以确保高优先级的中断得到更及时的响应。

(2)中断向量表:NVIC 使用中断向量表来管理中断。每个中断对应一个唯一的中断向量,在中断触发时,NVIC 会根据中断向量找到相应的中断服务程序(Interrupt Service Routine,ISR)来进行中断处理。

(3)中断使能和禁用:NVIC 提供了使能和禁用中断的功能,允许根据需要控制特定中断的触发和处理。

(4)中断嵌套和自动优先级切换:NVIC 支持中断的嵌套和自动优先级切换,可以在处理当前中断时响应更高优先级的中断请求,从而提高系统的灵活性和响应性。

(5)快速和低延迟的中断触发:NVIC 能够快速检测和触发中断,减少中断处理的延迟,提高系统的实时性和响应能力。

2. Apollo4BlueLite NVIC和cortex-M4 NVIC

NVIC 是嵌套向量中断控制器,控制着整个Apollo4BlueLite芯片中断相关的功能,它跟Cortex-M4内核紧密联系,是内核里面的一个外设。但是各个芯片厂商在设计芯片的时候会对Cortex-M4内核里面的 NVIC 进行裁剪,把不需要的部分去掉,所以说 Apollo4BlueLite 的 NVIC 是 Cortex-M 4 的 NVIC 的一个子集。

3.NVIC寄存器

(1)在配置中断的时候我们一般只用 ISER、ICER 和 IP 这三个寄存器,ISER 用来使能中断,ICER 用来清除中断,IP 用来设置中断优先级。

2_Apollo4BlueLite中断控制器NVIC,Apollo4BlueLite芯片学习,单片机,嵌入式硬件

(2)寄存器表

2_Apollo4BlueLite中断控制器NVIC,Apollo4BlueLite芯片学习,单片机,嵌入式硬件

  • ISER寄存器(Interrupt Set-enable Registers)

根据官方文档介绍:The NVIC_ISER0-NVIC_ISER7 registers enable interrupts, and show which interrupts are enabled.

可以看到ISER寄存器一共有8组,共计256bit,该寄存器可读可写,那么当需要使能对应中断时,需要配置对应bit位为1,也可以通过读寄存器来确认对应中断状态为使能或使能。

  • ICER寄存器(Interrupt Clear-enable Registers)

根据官方文档介绍:The NVIC_ICER0-NVIC_ICER7 registers disable interrupts, and show which interrupts are enabled.

注意直接写ISER寄存器为0不会禁止对应中断,必须通过ICER寄存器来实现禁止中断的功能。ICER实现的和ISER相反的功能。

  • ISPR寄存器(Interrupt Set-pending Registers)

根据官方文档介绍:The NVIC_ISPR0-NVIC_ISPR7 registers force interrupts into the pending state, and show which interrupts are pending.

这个寄存器用来挂起中断,对应bit设置为1时中断控制器会将正在进行的中断挂起,写0无效。

当高优先级的中断正在执行时,低优先级的中断发生了,这时CPU会将低优先级的中断临时挂起,等待高优先级的中断完成后,再去处理低优先级的中断。

  • ICPR寄存器(Interrupt Clear-pending Registers)

根据官方文档介绍:The NVIC_ICPR0-NCVIC_ICPR7 registers remove the pending state from interrupts, and show which interrupts are pending.

其作用与ISPR相反,对应位也和ISER是一样的。通过设置1,可以将挂起的中断解挂。

  • IABR寄存器(Interrupt Active Bit Registers)

根据官方文档介绍:The NVIC_IABR0-NVIC_IABR7 registers indicate which interrupts are active.

A bit reads as one if the status of the corresponding interrupt is active or active and pending.

该寄存器只读,如果为1,则表示该位所对应的中断正在被执行或者执行期间被挂起。在中断执行完了由硬件自动清零。

  • IPR寄存器(Interrupt Priority Registers)

根据官方文档介绍:The NVIC_IPR0-NVIC_IPR59 registers provide an 8-bit priority field for each interrupt and each register holds four priority fields. These registers are byte-accessible.

中断优先级寄存器,该寄存器只能以字节访问。每个中断占用8位,所以每个寄存器可以表示4个中断优先级,如下图所示

2_Apollo4BlueLite中断控制器NVIC,Apollo4BlueLite芯片学习,单片机,嵌入式硬件

这里一共可以表示60*4=240个中断的中断优先级,每个中断优先级占用1个字节。

ARM的中断优先级分两种,抢占优先级和响应优先级。

具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。

当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个(中断号小的先执行)。

(3)中断号

从Apollo4BlueLite的SDK中可以看到实际上只用了84个中断

2_Apollo4BlueLite中断控制器NVIC,Apollo4BlueLite芯片学习,单片机,嵌入式硬件

2_Apollo4BlueLite中断控制器NVIC,Apollo4BlueLite芯片学习,单片机,嵌入式硬件

4.NVIC 中断配置固件库

(1)固件库头文件 core_cm4.h 中,提供了 NVIC 的一些函数,这些函数遵循 CMSIS 规则,只要是 Cortex-M4 的处理器都可以使用,具体如下:

NVIC库函数

描述

void NVIC_EnableIRQ(IRQn_Type IRQn)

使能中断

void NVIC_DisableIRQ(IRQn_Type IRQn)

失能中断

void NVIC_SetPendingIRQ(IRQn_Type IRQn)

设置中断悬起位

void NVIC_ClearPendingIRQ(IRQn_Type IRQn)

清除中断悬起位

uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)

获取悬起中断编号

void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)

设置中断优先级

uint32_t NVIC_GetPriority(IRQn_Type IRQn)

获取中断优先级

void NVIC_SystemReset(void)

系统复位文章来源地址https://www.toymoban.com/news/detail-608981.html

到了这里,关于2_Apollo4BlueLite中断控制器NVIC的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • ARM Cortex-A学习(1):GIC(通用中断控制器)详解

    ARM Cortex-A学习(1):GIC(通用中断控制器)详解

    GIC (通用中断控制器, Generic Interrupt Controller )是一种用于处理中断的硬件组件,它的主要功能是协调和管理系统中的中断请求,确保它们被正确地传递给相应的处理器核心。 这里以Cortex-A9为例,先来看一下处理器的几种模式: 操作模式 描述 User 是应用程序运行的基本模式。这

    2024年01月24日
    浏览(8)
  • 第七章嵌套矢量中断控制器(Cortex-M7 Processor)

    第七章嵌套矢量中断控制器(Cortex-M7 Processor)

    目录   第七章嵌套矢量中断控制器  7.1关于NVIC 7.2NVIC功能描述 7.2.1低功耗模式 7.2.2电平与脉冲中断 7.3NVIC程序员模型  7.3.1中断控制器类型寄存器 本章描述了嵌套矢量中断控制器(NVIC)。它包含以下部分: 关于NVIC在7-2页。 NVIC功能描述见第7-3页。 NVIC程序员模型在第7-4页。 NVIC为

    2024年02月16日
    浏览(7)
  • 嵌入式学习笔记(32)S5PV210的向量中断控制器

    嵌入式学习笔记(32)S5PV210的向量中断控制器

    6.6.1异常处理的2个阶段 可以将异常处理分为2个阶段来理解。第一个阶段是异常向量表跳转;第二个阶段是进入了真正的异常处理程序irq_handler之后的部分。 6.6.2回顾:中断处理的第一个阶段(异常向量表跳转阶段)处理 (1)第一个阶段之所以能够进行,主要依赖于CPU设计时

    2024年02月07日
    浏览(10)
  • 基于IMX6ULLmini的Linux裸机开发系列五:通用中断控制器(GIC)

    基于IMX6ULLmini的Linux裸机开发系列五:通用中断控制器(GIC)

    目录 GIC结构 获取GIC中断控制器基地址 方法一:查询芯片数据手册 方法二:查询cp15协处理器 CBAR寄存器 SCTLR 寄存器 VBAR寄存器 GIC用于管理单核或多核芯片中的中断资源 ARM公司开发了4 个版本GIC规范 ,V1~V4 ARMv7-A内核搭配GIC-400使用 GIC结构 GIC官方手册:ARM® Generic Interrupt Contr

    2024年02月12日
    浏览(6)
  • 计组高分笔记:【05】中央处理器 「CPU细节 | 取指周期 | 间址周期 | 执行周期 | 中断周期 | 数据通路 | 硬布线控制器 | 微程序控制器 | 指令流水线 | LOAD | STORE」

    计组高分笔记:【05】中央处理器 「CPU细节 | 取指周期 | 间址周期 | 执行周期 | 中断周期 | 数据通路 | 硬布线控制器 | 微程序控制器 | 指令流水线 | LOAD | STORE」

    CPU由 运算器 和 控制器 组成。 注意:n位CPU,指机器字长为n,表示一次能够处理的二进制位数。自然与数据总线相等 1.1.1 运算器的基本组成 功能:对数据进行加工 通用寄存器组 :如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址

    2024年02月11日
    浏览(12)
  • Linux Kernel入门到精通系列讲解(QEMU-虚拟化篇) 2.2 新增加CPU外设之UART、中断控制器和pFLASH

    上一章节我们将 CPU 和部分 memory 已经初始化完成了,具体实现可以查看代码仓库,本章节我们将在上一章节的基础之上去增加 pFlash 设备(作为初始化完 ROM 后的第一个代码存储区)、中断控制器和 UART 设备。

    2024年04月25日
    浏览(10)
  • 【Apollo】Apollo的入门介绍

    【Apollo】Apollo的入门介绍

    阿波罗 是百度发布的名为“Apollo(阿波罗)”的 向汽车行业及自动驾驶领域的合作伙伴提供的软件平台 。 帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 百度开放此项计划旨在建立一个以合作为中心的生态体系,发

    2024年02月09日
    浏览(6)
  • 【Apollo】Apollo-ros版本架构学习与源码分析

    【Apollo】Apollo-ros版本架构学习与源码分析

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍Apollo-ros版本架构学习与源码分析。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 Apollo1.0源码注释项目Github地址: https://github.com

    2024年02月13日
    浏览(5)
  • Apollo星火计划学习笔记——Apollo开放空间规划算法原理与实践

    Apollo星火计划学习笔记——Apollo开放空间规划算法原理与实践

    Apollo星火计划课程链接如下 星火计划2.0基础课:https://apollo.baidu.com/community/online-course/2 星火计划2.0专项课:https://apollo.baidu.com/community/online-course/12     开放空间算法的配置主要在 valet_parking_config.pb.txt 中,分为4个部分: OPEN_SPACE_ROI_DECIDER 、 OPEN_SPACE_TRAJECTORY_PROVIDER 、 OPE

    2023年04月10日
    浏览(12)
  • Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

    Apollo星火计划学习笔记——Apollo决策规划技术详解及实现(以交通灯场景检测为例)

    Apollo星火计划课程链接如下 星火计划2.0基础课:https://apollo.baidu.com/community/online-course/2 星火计划2.0专项课:https://apollo.baidu.com/community/online-course/12 星火计划学习笔记——第七讲自动驾驶规划技术原理1 ●目的 ○ 保障无人车的行车安全并且遵守交规 ○ 为路径和速度的平滑优

    2024年02月07日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包