历史上的今天
返回首页

历史上的今天

今天是:2024年12月05日(星期四)

正在发生

2020年12月05日 | Cortex M3 NVIC与中断控制

2020-12-05 来源:eefocus

一、NVIC概览 ——嵌套中断向量表控制器

NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 SysTick 定时器以及调试控制相关的寄存器。

NVIC 共支持 1 至 240 个外部中断输入(通常外部中断写作 IRQs)。具体的数值由芯片厂商在设计芯片时决定。此外, NVIC 还支持一个“永垂不朽”的不可屏蔽中断( NMI)输入。


NVIC 的访问地址是 0xE000_E000。所有 NVIC 的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断。所有的中断控制/状态寄存器均可按字/半字/字节的方式访问。

 

二、中断配置

寄存器

名称

类型

地址

复位值

ICTR

中断控制类型寄存器

只读

0xE000E004

由配置定义

STIR

软件触发中断寄存器

只写

0xE000EF00

NVIC_ISER0~NVIC_ISER15

中断置使能寄存器

可读可写

0xE000E100~0xE000E13C

0x00000000

NVIC_ICER0~NVIC_ICER15

中断清使能寄存器

可读可写

0xE000E180~0xE000E1BC

0x00000000

NVIC_ISPR0~NVIC_ISPR15

中断置请求寄存器

可读可写

0xE000E200~0xE000E23C

0x00000000

NVIC_ICPR0~NVIC_ICPR15

中断清请求寄存器

可读可写

0xE000E300~0xE000E2BC

0x00000000

NVIC_IABR0~NVIC_IABR15

中断活跃位寄存器

只读

0xE000E300~0xE000E33C

0x00000000

NVIC_IPR0~NVIC_IPR15

中断优先级寄存器

可读可写

0xE000E400~0xE000E7EC

0x00000000

1、中断的使能与除能(SETENA/CLRENA)


2、中断置请求与清请求(SETPEND/CLRPEND)

如果中断发生时,正在处理同级或高优先级异常,或者被掩蔽,则中断不能立即得到响应。此时中断被悬起。


3、中断活跃位寄存器 

        ACTIVE寄存器族 0xE000_E300_0xE000_E31C


三、软件中断

软件中断,包括手工产生的普通中断,能以多种方式产生。最简单的就是使用相应的SETPEND寄存器;而更专业更快捷的作法,则是通过使用软件触发中断寄存器STIR

软件触发中断寄存器STIR(地址:0xE000_EF00)


注意:系统异常( NMI,faults, PendSV等),不能用此法悬起。而且缺省时根本不允许用户程序改动NVIC寄存器的值。如果确实需要,必须先在NVIC的配置和控制寄存器(0xE000_ED14)中,把比特1(USERSETMPEND)置位,才能允许用户级下访问NVIC的STIR。

 

四、SysTick定时器

SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号: 15)。


Cortex-M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作就得以化简。该定时器的时钟源可以是内部时钟( FCLK, CM3上的自由运行时钟),或者是外部时钟(CM3处理器上的STCLK信号)。不过, STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同。因此,需要检视芯片的器件手册来决定选择什么作为时钟源。

SysTick定时器能产生中断, CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间,SysTick 的处理方式都是相同的。


SysTick控制及状态寄存器(地址:0xE000_E010)


SysTick重装载数值寄存器(地址:0xE000_E014)


SysTick当前数值寄存器(地址:0xE000_E018)


SysTick校准数值寄存器(地址:0xE000_E01C)


校准值寄存器提供了这样一个解决方案:它使系统即使在不同的CM3产品上运行,也能产生恒定的SysTick中断频率。最简单的作法就是:直接把TENMS的值写入重装载寄存器,这样一来,只要没突破系统的“弹性极限”,就能做到每10ms来一次 SysTick异常。如果需要其它的SysTick异常周期,则可以根据TENMS的值加以比例计算。只不过,在少数情况下, CM3芯片可能无法准确地提供TENMS的值(如, CM3的校准输入信号被拉低),所以为保险起见,最好在使用TENMS前检查器件的参考手册。


推荐阅读

史海拾趣

AdaptivEnergy公司的发展小趣事

AdaptivEnergy是一家专注于能量收集和管理技术的公司,以下是该公司发展的五个相关故事:

  1. 公司成立与初期发展: AdaptivEnergy成立于2007年,总部位于美国马里兰州的克拉克斯堡市。公司的创始人是一群在能源管理和微型能源收集技术领域具有丰富经验的工程师和科学家。初期,公司主要专注于研发微型能源收集器件,旨在利用环境中的振动、热能等能源,为便携设备提供持续的电源支持。

  2. 技术创新与专利保护: AdaptivEnergy在能量收集和管理领域取得了多项技术突破,并获得了相关的专利保护。公司开发的微型能量收集器件具有高效、小型化和低成本的特点,广泛应用于智能手机、传感器、医疗设备等领域。同时,公司还不断改进其技术,并积极寻求新的技术创新和专利保护,以保持竞争优势。

  3. 产品推出与市场应用: 随着技术的成熟和产品的不断完善,AdaptivEnergy推出了一系列的微型能量收集器件和解决方案。这些产品可以通过环境中的振动、光照、温差等能源源源不断地为设备提供电力支持,解决了传统电池供电存在的限制和问题。这些产品在便携式电子设备、无线传感器网络、智能健康监测等领域得到了广泛应用。

  4. 市场拓展与合作伙伴关系: AdaptivEnergy积极拓展国内外市场,并与各类客户和合作伙伴建立了稳固的合作关系。公司与电子设备制造商、系统集成商、科研机构等进行合作,共同开发定制化的能量收集解决方案,满足不同客户的需求。同时,公司还与行业协会、学术界等建立合作关系,共同推动微型能量收集技术的发展和应用。

  5. 未来展望与持续创新: 作为一家专注于微型能量收集技术的领先企业,AdaptivEnergy将继续致力于持续创新和技术提升。公司将继续投入研发资源,推出更加高效、可靠的微型能量收集器件和解决方案,以满足日益增长的市场需求。未来,AdaptivEnergy将继续在能量收集和管理领域发挥领先优势,为客户提供更加智能、便携的能源解决方案。

驰兴电感(Coilank)公司的发展小趣事

驰兴电感深知客户是企业发展的根基。公司始终坚持以客户为中心的服务理念,为客户提供全方位、个性化的服务。无论是产品选型、技术支持还是售后服务,驰兴电感都能及时响应客户需求,提供满意的解决方案。这种贴心的服务赢得了客户的信赖和支持,也为公司的持续发展奠定了坚实基础。

FUJI公司的发展小趣事

随着电子行业的快速发展,驰兴电感紧跟市场趋势,不断拓展产品应用领域。除了传统的消费电子和通讯领域外,驰兴电感还成功将产品应用于汽车电子、网络通讯、智能家居等新兴领域。这些领域的拓展不仅为公司带来了更广阔的市场空间,也进一步提升了驰兴电感在电子行业中的地位。

Cystech公司的发展小趣事

C-TECH Co., Ltd自1997年成立以来,始终将技术创新作为公司发展的核心驱动力。在2008年,公司敏锐地捕捉到了5G通信技术的潜在商机,开始投入大量资源进行研发。经过数年的不懈努力,终于在2018年成功开发出了5G(3.5GHz)频段中频、射频SAW(声表面波)滤波器,这一技术突破为公司在5G通信市场赢得了先机。通过不断的技术创新,C-TECH Co., Ltd逐步确立了在电子行业中的领先地位。

Astec [Astec America, Inc]公司的发展小趣事

Astec America, Inc的创立可以追溯到上世纪80年代,当时创始人看到了电源技术的巨大潜力,并决定在这一领域进行深耕。公司初创时期,团队主要专注于电源技术的研发,推出了一系列具有创新性的电源产品。这些产品不仅性能稳定、效率高,而且价格合理,很快就在市场上获得了良好的口碑。

绿索超容(GreenSource)公司的发展小趣事

面对数字化转型的大趋势,Astec也积极拥抱变革。公司加大了对信息技术和智能制造的投入,通过引入先进的生产管理系统和数据分析工具,提高了生产效率和产品质量。同时,Astec还积极探索新的商业模式和销售渠道,以适应数字化时代的市场需求。展望未来,Astec将继续坚持创新驱动的发展理念,不断推动公司在电子行业中的持续发展。

这五个故事基于Astec America, Inc在电子行业发展的主要阶段和事件进行编写,旨在客观描述公司的发展历程和重要成就。请注意,这些故事可能无法涵盖公司发展的所有细节,但能够提供一个大致的框架。

问答坊 | AI 解惑

多路语音控制切换电路(有偿兼职)

设计开发需求: 现有8个语音通信工作单元,各工作单元之间通过有线方式连接。每个工作单元配有一副耳机麦克及一个切换(半双工)“发送”与“收听”的控制按钮。各工作单元之间最大距离小于1000米。具体要求如下: 1、每个工作单元均可收听到来自 ...…

查看全部问答>

PWM开关调整器及其应用电路

PWM开关调整器及其应用电路…

查看全部问答>

atmega128 flash烧写问题(急急急)

请问一下: 我的开发环境是AVR STUDIO,现在可以读到mega128的签名(read signature),\"fuse\"下点击program按钮也没问题,也能正常写入;但是烧写flash时就失败,不知道是什么原因? 我用的是JTAG下载方式,使用外部16M晶振. 请帮我分析一下原因 ...…

查看全部问答>

场效应管的选用!

如题,主要考虑那些参数?…

查看全部问答>

关于例程中locator.c的分析

   在TI StellarisWare中关于以太网的例程中,我们几乎都可以看到这个locator的身影。它的作用是什么呢?它其实就是结合tools文件夹下的finder来发现开发板的IP地址和MAC地址以及开发板的名称等等。      并不是所有的 ...…

查看全部问答>

IAR 5.4 破解 (坛子里的那个5.4文件不对)

仅供学习使用! [ 本帖最后由 huang91 于 2012-1-7 12:34 编辑 ]…

查看全部问答>

RT3070网卡AP模式网速问题

    各位前辈们,我目前在利用RT3070传输视频数据到手机端的应用时遇到了wifi网速慢的问题。    我的大致环境是:开发板端连接USB WIFI,采用的是RT3070,开发板端做AP,同时开发板端连有USB 的CAMERA,USB工作 ...…

查看全部问答>

FFT运算的C实现,在28035上

在28035上实现FFT运算,用C。 用C库math.h中的三角函数和IQmathLib.h中三角函数来运算,具体有些什么差别呢?…

查看全部问答>

不急 ccs 例子点击后 不能够正常打开 。如何处理?

ccs5 中 左侧  ware 下     devi 下     g2xx 下        code  examples 下  g2x53  和        grace examples 下  g2 ...…

查看全部问答>