历史上的今天
返回首页

历史上的今天

今天是:2025年05月14日(星期三)

正在发生

2021年05月14日 | STM32之NVIC知识讲解

2021-05-14 来源:eefocus

我们先来看一下Reference Datasheet中是如何说的:


SCB->AIRCR中目前只用到4位,也就是最高能有16级中断嵌套,如果全使用的话可以达到256级


选用优先级分组(实际就是选几位用于主优先级几位用于辅优先级)


注意,我们在一个工程中只能用一种分组方式


The table below gives the allowed values of the pre-emption priority and subpriority according

to the Priority Grouping configuration performed by NVIC_PriorityGroupConfig function

===========================================================================

NVIC_PriorityGroup | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority | Description

===========================================================================

NVIC_PriorityGroup_0 | 0 | 0-15 | 0 bits for pre-emption priority

|| | 4 bits for subpriority

----------------------------------------------------------------------------------------------------------------------------

NVIC_PriorityGroup_1 | 0-1| 0-7 | 1 bits for pre-emption priority

||| 3 bits for subpriority

----------------------------------------------------------------------------------------------------------------------------

NVIC_PriorityGroup_2 | 0-3 | 0-3 | 2 bits for pre-emption priority

|| | 2 bits for subpriority

----------------------------------------------------------------------------------------------------------------------------

NVIC_PriorityGroup_3 | 0-7 | 0-1 | 3 bits for pre-emption priority

| | | 1 bits for subpriority

----------------------------------------------------------------------------------------------------------------------------

NVIC_PriorityGroup_4 | 0-15| 0 | 4 bits for pre-emption priority

|| | 0 bits for subpriority


以上是我提取库中misc.h中的说明便于大家理解


如果要使用中断那就得把中断向量表先存储到存储器,我们先来一段程序看一下吧


void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM

NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);

#else

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);

#endif

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);


NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;


NVIC_Init(&NVIC_InitStructure);

}


这里边包含一个条件编译,如果我们要把中断向量表存储在RAM或者FLASH就要定义相关的宏


后边选用优先级分组的0组,也就是0位用于主优先级,4位用于辅优先级


主优先级可以中断嵌套(可以抢占)


辅优先级不可以中断嵌套,只能当前中断完成之后再相应优先级最高的


如果辅优先级相同则相应中断向量表靠前的


NVIC_IRQChannel 是说明用的哪种中断,包括所有的中断与异常(NVIC都管理,包括内核的)


讲到这里我们要提一下不可屏蔽中断,这个中断是不能屏蔽的NMI是不能屏蔽的,其他中断都是可以屏蔽的


推荐阅读

史海拾趣

HiRel Connectors Inc公司的发展小趣事
确保所选电源的电压和电流满足摄像头的需求。
ELEMENT14公司的发展小趣事

ELEMENT14公司最初是一家电子元器件分销商,但随着市场的变化和客户需求的升级,公司决定转型为提供一站式服务的平台。这一转变意味着公司不仅要提供电子元器件,还要提供软件、技术支持、在线社区等全方位的服务。通过不断的投入和努力,ELEMENT14成功转型为一个综合性的电子元器件服务平台,满足了客户多样化的需求。

粤翔(FlyWin)公司的发展小趣事
如DC-DC升压/降压电路,用于在电压异常时调整电压输出,确保关键部件仍能正常工作。
DIALIGHT公司的发展小趣事

DIALIGHT公司的故事始于1938年的纽约布鲁克林,当时该公司专注于为飞机生产仪表板灯。随着技术的不断进步和市场的变化,公司在1971年,即LED推出仅一年后,推出了他们的第一个LED产品。这一举措标志着DIALIGHT正式从传统的飞机仪表板灯制造转向LED照明技术的研发和应用。从此,DIALIGHT彻底改变了LED的用途,将其广泛应用于世界各地的交通控制、指示灯、结构塔和工业场所,为全球提供了优质的照明解决方案。

Harbour Industries公司的发展小趣事

背景:进入21世纪后,电子行业进入了快速整合阶段,大型企业纷纷通过并购来扩大规模、增强实力。Handok也加入了这一行列,制定了积极的并购扩张战略。

发展:Handok通过精准的市场分析和战略评估,成功并购了几家在电子元器件和电子设备领域具有领先技术的中小企业。这些并购不仅为Handok带来了先进的技术和人才储备,还极大地拓宽了公司的产品线和服务范围。

影响:并购后的Handok实现了从单一产品向多元化产品线的转型,市场竞争力显著提升,为公司的长远发展奠定了坚实的基础。

Cobham Semiconductor Solutions公司的发展小趣事

Cobham Semiconductor Solutions自成立之初,便以技术创新为核心驱动力。公司不断投入研发,推动半导体技术的突破。在某一关键时期,Cobham团队成功研发出一款具有革命性的低功耗芯片,不仅大幅提升了设备的性能,还降低了能耗,迅速在市场上获得了广泛应用。这一创新不仅为公司带来了可观的利润,还奠定了其在半导体行业的领先地位。

问答坊 | AI 解惑

单片机与TCP/IP网络(接口电路图详解(1))

----89c52单片机部分——ISA接口的A,B部分.这是RTL8019网卡ISA的前半部分A1--A31(1...31),B1--B31(32...62)共62个引脚. DATA0--DATA7是网卡的8位数据总线,接单片机的P0口. RESDRV(33脚)(RESET)接单片机的T0(P3.4),单片机用P3.4来复位网卡。 IRQ9 ...…

查看全部问答>

几种实用的直流开关电源的保护电路

中心议题: 开关电源的原理及特点直流开关电源的保护 解决方案: 过电流保护电路过电压保护电路软启动保护电路过热保护电路 随着科学技术的发展,电力电子设备与人们的工作、生活的关系日益密切,而电子设备都离不开可靠的电源,因此直流开关电 ...…

查看全部问答>

求 基于44B0 裸机程序

写了几天都没写出来,还是请教各位大虾吧 基于44B0 的按键中断LED 裸机程序啊?发个给我好吗? 谢谢了 249191508@qq.com …

查看全部问答>

飞思卡尔下一代医疗电子MCU

这是昨天上海FTF2010的一个技术研讨会的ppt,传上来,大家可以看看…

查看全部问答>

谁手里还有用不到的lpc1343的开发板

最近想折腾一下LPC1343,各位大侠谁手头有用不上的LPC1343开发板,能不能转我一块,感激不尽。…

查看全部问答>

感谢EEWORLD, 秒杀的LM3S811到手了。晒一下。

昨天收到快递通知。因为单位放假,改了收货地址。今天送到了我家里。圆通的服务还真不错。 闲话少说,上图。  …

查看全部问答>

[诚寻] DSP开发 DSP测试 RF测试工程师 上海 15-22万 非诚勿扰

请自荐或是推荐的朋友发送简历到以下邮箱: Jerome.zhang@focu-search.com   QQ:727190736 申请职位请务必在邮件中注明所申请职位的名称、目前的薪酬大致情况和期望、您目前的工作地点。 谢谢! 统招本科 硕士优先(本科3年左右 硕士2 ...…

查看全部问答>

请教:为何keil 8编译后运行正常,模式0编译后结果错误?

#include #include   //包含_nop_()函数定义的头文件 /***************************************************** 基础函数功能:延时5ns (3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒 ************************************ ...…

查看全部问答>

学模拟+《运放噪声优化》4 4.11离散噪声源构成的运放噪声模型

shiyongzhu  网友问我图4.11对应的噪声电压源和电流源,从那下载?我开始理解错了,刚才看了一下才知道。在TI官网上找到了,有点不太好找,为方便大家学习特此上传,希望有用,附图: …

查看全部问答>

【转】HPS典型的启动流程与BOOT ROM执行流程的应用笔记

HPS典型的启动流程与BOOT ROM执行流程的应用笔记 HPS作为一个SoC器件,所有执行程序都要遵循严格的启动流程,本文针对对于HPS的启动引导流程不曾关注过或者不是十分清楚的开发人员。HPS的启动是多阶段的流程,每一个阶段都会完成自己相应的工作并把 ...…

查看全部问答>