历史上的今天
返回首页

历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2021年10月12日 | STM32之中断函数介绍篇

2021-10-12 来源:eefocus

NVIC驱动有很多的用途,如使能或者失能IRQ(中断请求),或者是使能或失能单独的IRQ通道,或者是改变其优先级。以下介绍相关函数的功能和基本用法。


1.NVIC_DeInit函数的功能是将外设NVIC寄存器重设为默认值。


2.NVIC)PriorityGroupConfig函数的功能是设置优先级分组:先占优先级和从优先级,且有一个输入参数是优先级分组的长度


例:定义先占优先级1,从优先级3.


NVIC_PriorityGroupConfig(NVICPriorityGroup_1);


3.NVIC_Init函数的功能是根据NVIC_InitStruct里面指定的参数初始化外设NVIC寄存器,其中NVIC_InitTypeDef structure定义结构体的代码如下:


typedef struct


{

u8 NVIC_IRQChannel;


u8 NVIC_IRQChannelPreemptionPriority;


u8 NVIC_IRQChannelSubPriority;


FunctionalState NVIC_IRQChannelCmd;


}NVIC_InitTypeDef;


NVIC_IRQChannel参数是用于使能或者失能指定的IRQ通道,其中IRQ通道有很多,可以自己查询相关的手册。


NVIC_IRQChannelPreemptionPriority参数设置了成员NVIC_IRQChannel中的先占优先级。


IRQChannelSubPriority参数设置了成员NVIC_IRQChannel中的从优先级。


当选定NVIC_PriorityGroup_0,参数NVIC_IRQChannelPreemptionPriority对中断通道的设置不产生影响;


当选定NVIC_PriorityGroup_4,参数IRQChannelSubPriority对中断通道的设置不产生影响。


NVIC_IRQChannelCmd参数指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能或者失能,参数可取ENABLE 和 DISABLE。


例:定义优先级


NVIC_InittypeDef NVIC_InitStructure;


NVIC_PriorityGroupConfig(NVICPriorityGroup_1);//先占优先级用1 ,从优先级用3


//定义TIM3中断的优先级,先占优先级为0,从优先级为2


NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;


NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;


NVIC_InitStructure.NVIC_IRQSubPriority = 2;


NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;


NVIC_InitStructure(&NVIC_InitStructure);


//定义USART1串口中断的优先级,先占优先级1,从优先级5.



NVIC_InitStructure.NVIC_IRQChannel = SUART1_IRQChannel;


NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;


NVIC_InitStructure.NVIC_IRQSubPriority = 5;


NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;


NVIC_InitStructure(&NVIC_InitStructure);


//定义RTC中断优先级为1,从优先级为7;

NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel;


NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;


NVIC_InitStructure.NVIC_IRQSubPriority = 7;


// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;


NVIC_InitStructure(&NVIC_InitStructure); 


4.NVIC_SetVectorTable函数的功能是设置向量表的位置和偏移。其中输入参数中,对于32位的OFFSET向量表基地址的偏移量对于FLASH,参数值必须高于0x08000100,对于RAM必须高于0X100.


例:对FLASH指定向量表基地址偏移量。


NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x00);

推荐阅读

史海拾趣

Elektron公司的发展小趣事

Elektron公司的故事始于1942年,由威利·科伯以Elektron物理技术设备工厂Kerber的名称成立。当时,该公司主要生产基于汞蒸气整流器的固定电池电源和船用电池充电器。这些产品在市场上取得了良好的反响,为公司的发展奠定了坚实的基础。在随后的几年里,Elektron不断扩大产品范围,开始涉足汽车行业的电池充电器以及焊接和切割工艺的电源等领域。

Excelight Communications Inc公司的发展小趣事

随着5G技术的兴起,光通信行业迎来了新的发展机遇。Excelight紧跟时代步伐,投入大量资源进行技术研发。在李明和团队的共同努力下,公司成功研发出了一款具有自主知识产权的高速光通信芯片,这一成果不仅填补了国内空白,还使Excelight在国际市场上占据了有利地位。

技术突破后,Excelight的产品性能得到了显著提升,同时也带动了整个产业链的升级。公司开始与更多的国内外企业建立合作关系,共同推动光通信行业的发展。

Hitachi (Renesas )公司的发展小趣事

作为一家有社会责任感的企业,Excelight始终关注社会公益事业。公司积极参与各类慈善活动和社会捐赠项目,为贫困地区的教育、医疗等事业做出了贡献。

此外,Excelight还注重环保和可持续发展。公司在生产过程中严格遵守环保法规和标准,积极采用环保材料和工艺。同时,Excelight还加强了节能减排和废弃物处理工作,努力实现绿色生产和可持续发展。

启攀微电子(Chiphomer)公司的发展小趣事

2009年,全球经济遭受金融海啸的冲击,启攀微电子也面临着巨大的市场压力。然而,公司并没有选择退缩,而是选择了坚守与创新。在经济危机的背景下,公司加强了产品推广和客户支持,同时加快了新品开发的步伐。经过几年的打拼,启攀微电子的消费类电子产品在手机领域取得了一定的市场认可,出货量大幅提升,市场份额稳步上升。

DS-IMP公司的发展小趣事

在电子行业,供应链管理是企业发展的关键因素之一。DS-IMP公司深知这一点,因此在发展过程中不断优化供应链管理。公司建立了完善的供应链体系,与供应商和客户建立了长期稳定的合作关系。同时,公司还引入了先进的供应链管理软件和技术手段,实现了对供应链的实时监控和精细化管理。这些措施不仅提高了公司的运营效率,还降低了成本风险,为公司的发展提供了有力保障。

上海晶岳(AFSEMI)公司的发展小趣事

随着市场的不断变化和技术的不断进步,晶岳电子意识到单一的产品线已无法满足市场需求。于是,在2012年,公司开始拓展产品线,研发并推出了LDO、DCDC、复位IC等电源管理芯片。这一举措不仅丰富了公司的产品线,也进一步提升了公司在电源管理领域的竞争力。同时,晶岳电子还加大了对研发团队的投入,引进了一批具有丰富经验的研发人员,为公司的技术创新提供了有力保障。

问答坊 | AI 解惑

急救!关于protel 99se的仿真

当我在对一个电路进行仿真时总是出现这些错误,但我又不知道什么意思,请各位高手指点一下。 非常感谢! C3 Error: Pin order data (PINS=1:[]) not in READ ONLY field 4. Pins sorted by pin-name. C3 Error ...…

查看全部问答>

IPCWorks Asia 2008十月引领绿色制造潮流

从无铅、RoHS到无卤素,再到PoHS,业界对环保材料的“门槛”越设越高,未来的绿色之路将走向何处?今年10月15-16日高交会电子展期间,品牌研讨会\"IPCWorks Asia\"将再次在深圳举办,本届会议的主题是\"无铅/无卤素制造\",届时众多业内无卤技术专 ...…

查看全部问答>

rt12864

我想rt12864所有的型号内部都是一样的吗?…

查看全部问答>

要写一个嵌入式实时操作系统,不知如何下手

最近组了一个3人团队,要写一个嵌入式实时操作系统,看了两星期的相关资料了,但是还是没有头绪,请各位大虾给点指点…

查看全部问答>

SqlCE PULL正常 SubmitSql也是正常的. 但是在 PUSH时出错. 请会的指点一下.

程序如下:             string _strRemoteConnect = \"provider=sqloledb;data source=192.168.1.99;Initial Catalog=zls;User ID=sa;\";             SqlCeRe ...…

查看全部问答>

问一个AVR的延时函数_delay_ms()的问题

_delay_ms()这个延时到底有多准啊? 如果用计数器TNCT0计数,TNCT0的初始值为55,跳到255后溢出中断, 选择8分频的时钟源,F_CPU= 16M,10ms的时间TNCT0的溢出次数应该是100次 即TNCT0跳了100*(255-55)= 20000次。 问:     _ ...…

查看全部问答>

运放做跟随器用

本帖最后由 dontium 于 2015-1-23 12:53 编辑    还是来说说跟随器吧,我是采用AD转换,把模拟信号采取回来,后用了个跟随器。但是跟随回来的电压不稳定,在数码管上有斗动。运放是LM358 …

查看全部问答>

要求输出电流高的的开关电路,求高手详解一下电路,谢谢

要求输出电流高的的开关电路,集电极输入vcc为6.5v,按键基极输入5.22v。求高手详解一下电路,q1为ss8050,q2为2SC2500,我觉得这个电路构不成开关电路,我的理由是6.5>5.22是反偏,集电极反偏,发射极正便,求高手解决小弟的问题。更加纳闷的是 ...…

查看全部问答>

心电图(ECG)信号链的模拟基础(三)

本帖最后由 dontium 于 2015-1-23 12:43 编辑 ECG 机的基本功能包括 ECG 波形显示(通过 LCD 显示屏或印刷纸媒质显示)、心跳律动指示以及通过按钮控制的简单用户界面。越来越多的 ECG 产品要求具备更多的功能,例如通过便携式媒体存储电子病历、 ...…

查看全部问答>

nRF24L01无线数据传输电路

芯片适用,nRF24L01无线数据传输电路,nRF24L01引脚说明及封装图。 资源连接: https://download.eeworld.com.cn/detail/lbk747/948…

查看全部问答>