历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2018年12月03日 | STM32之中断管理

2018-12-03 来源:eefocus

 关于STM32的中断,相信大家玩过单片机的朋友就知道,中断是MCU的一大优点,使MUC工作能够分清事情的”轻重缓急“ ,从而达到处理事情井井有条;


 今天就讲解下STM32-Cortex-M3内核的中断管理机制,其他处理器的也类似;M3中F103系列的有60个可屏蔽的中断和16个内核级别的中断;


 大家知道,操作一款MCU 其实实质就是操作的寄存器,而寄存器有机的结合起来就实现了特定的功能;中断系统也不例外,下面来认识一下中断系统中的几个重要的寄存器;


  1. ISER[8](Interrupt Set-Enable Registers),就是中断使能寄存器组,这个数组有8个成员,每个成员是32位的寄存器;写1有效,写0无效;


   2. ICER[8](Interrupt Clear-Enable Registers),就是中断清除使能寄存器组,这个数组有8个成员,每个成员是32位的寄存器;写1清除对应ISER寄存器上的寄存器位,写0无效;


  3. ISPR[8]:inerrupt Set-Pending Registers ,即中断挂起寄存器;写1有效,即可将正在执行的中断挂起,而去执行另外的高优先级别或者是同级别的中断,写0则无效;


 4. ICPR[8]:interrupt Clear-Pending Registers ,即中断清除挂起寄存器;写1有效,即可将正在执行的中断解挂起者,写0则无效;


 5.IABR[8]:Interrupt Active Bit Registers,中断激活标志位;标志位为1时,则对应该中断正在执行;


 6.IP[240]:Interrupt Priority Registers,中断优先级控制寄存器组,具有240个8bit的寄存器,每个寄存器对应着8个bits,而f103是M3内核,只用了前面60个寄存器;只用高4位【7:4】有效;


 7.SCB->AIRCR 寄存器,是一个设置中断优先级分组的寄存器,只10:8位 有效; 111 --对应 iP寄存器中0:4 ,即0位抢占位,4时响应优先级;


总而已之,要使用中断,必须先设置中断优先级分组,NVIC_PrioityGroupConfig();


再设置 NVIC_Init();



推荐阅读

史海拾趣

Daewoo公司的发展小趣事

然而,好景不长。1997年亚洲金融危机的爆发给Daewoo公司带来了前所未有的挑战。由于过度扩张和错误的投资决策,公司背负了巨额债务,资不抵债。面对这一困境,Daewoo公司不得不进行资产重组和裁员等措施,以减轻财务压力。虽然这些措施在短期内带来了痛苦,但也为公司的未来发展奠定了基础。

高创科技(gotrend)公司的发展小趣事

然而,好景不长。1997年亚洲金融危机的爆发给Daewoo公司带来了前所未有的挑战。由于过度扩张和错误的投资决策,公司背负了巨额债务,资不抵债。面对这一困境,Daewoo公司不得不进行资产重组和裁员等措施,以减轻财务压力。虽然这些措施在短期内带来了痛苦,但也为公司的未来发展奠定了基础。

Firadec公司的发展小趣事

背景:假设Firadec公司(此处为虚构名称)成立于20世纪90年代初,正值半导体技术快速发展的时期。公司创始人是一位在半导体领域有深厚造诣的科学家,他带领团队研发出了一种新型低功耗、高性能的集成电路技术。

发展:这项技术迅速获得了市场的认可,Firadec公司凭借这一创新产品迅速在电子行业崭露头角。公司不断加大研发投入,持续优化产品性能,逐渐在智能手机、平板电脑等消费电子领域占据了一席之地。

影响:随着技术的不断成熟和应用领域的拓展,Firadec公司的市场份额逐年提升,成为了电子行业中的佼佼者。其技术创新不仅推动了公司自身的发展,也为整个电子行业的进步做出了重要贡献。

Allianc公司的发展小趣事

在电子行业竞争日益激烈的背景下,Allianc公司深知只有不断创新才能保持竞争力。因此,公司加大了对研发创新的投入力度,建立了完善的研发体系和激励机制。通过持续的创新和优化,公司不断推出新产品和新技术,满足了市场的不断变化和消费者的多样化需求。这些创新举措不仅提升了公司的竞争力,也为公司的长期发展注入了新的动力。

C&H Technology公司的发展小趣事

C&H Technology成立于2005年,由两位志同道合的电子工程师陈先生和何先生共同创立。两位创始人凭借在半导体领域的深厚技术积累,瞄准了当时正在兴起的智能手机市场,决定开发一款高性能、低功耗的手机芯片。他们租下一间小办公室,招募了几名志同道合的工程师,开始了艰苦的创业之旅。

起初,公司面临资金短缺、技术瓶颈和市场认可度低等重重困难。但陈先生和何先生凭借坚定的信念和不懈的努力,逐步攻克技术难题,与供应商建立了稳定的合作关系,并通过参加行业展会等方式,逐渐提高了品牌知名度。经过几年的努力,C&H Technology成功推出了首款手机芯片,并获得了市场的认可。

Elprotronic Inc.公司的发展小趣事

随着电子行业的不断发展,客户对电子元器件的需求也在不断变化。Elprotronic Inc.紧跟市场趋势,不断推出具有创新性的产品和技术。其中,一项名为“高速数据传输技术”的创新成果引起了业界的广泛关注。这项技术可以大幅提高数据传输速度,同时保证数据的稳定性和安全性。这一突破性的技术创新为Elprotronic Inc.赢得了更多客户的信赖和支持,也进一步巩固了公司在行业中的地位。

问答坊 | AI 解惑

利用运算放大器实现的混频器

混频器常常用一个二极管桥式电路(diodebridge)或一个Gilbert单元(Gilbertcell)来实现。这两类混频器都使用了一个本地振荡器(LO)来跳转射频输入的极性。   当LO为正时,RF输入被混频转换为中频(IF)输出时极性不改变。当LO为负时,RF输入转换为IF时极 ...…

查看全部问答>

关于TAPI的lineInitializeEx的困惑

Windows Embedded CE 6.0帮助文档中介绍,Establishing a Modem Connection的流程如下: lineInitializeEx      ↓ lineOpen      ↓ lineMakeCall      ↓ lineGetMessage & ...…

查看全部问答>

subproject的问题

用windows ce 的template建了个pda的os project 想在这个project下面加一个 subproject 来播放一个 test16bit.wav的文件 这个文件 我是从project property的custom build actions里面加入目录relase的 这个subproject我是这么写的 #include # ...…

查看全部问答>

虚拟网卡动态修改mac

    本人目前维护一个虚拟网卡的微端口驱动程序,代码已经由别人完成,且已经商品化,公司要求我增加一项功能,功能是驱动能够动态的修改虚拟网卡的mac地址。      虚拟网卡mac地址的初始化是通过读一个TXT文件,然 ...…

查看全部问答>

串口输出 程序调试

#include #include void main() { int i=7,j=2; float f=(float)i/j; SCON = 0x50; TMOD |= 0x20; TH1 = 0xf3; TR1 = 1; TI = 1; printf(\"%f\",f); while(1) {} } 这个程序为什么在运行的时候 在串口输入串口 没看到东西啊 ...…

查看全部问答>

一个让人纠结的结果

最近玩单片机的时候谢了一个小代码,但是实在不知道出错在哪里。代码如下         ORG 0000H         ;程序从000H地址开始运行         LJMP        ...…

查看全部问答>

求教!新手求指点

若我有一台17KW  600V的无刷电机,控制器的驱动部分因该选用哪种IGBT和驱动芯片呀,求个型号以供参考,谢谢了…

查看全部问答>

LPCXpresso-CN在IAR下怎么开发,选什么仿真器啊

驱动应该装好了,用lpcxpresso IDE开发无能 板子后面写了IAR,应该可以用IAR来开发 导入了一个IAR里自带的LPC1114的例程 编绎有一警告,无错误 仿真器选择那个呢,我一个个试好像都不行啊, 是不是有其他的选项要设置…

查看全部问答>

Z-Stack中SimpleApp开关结点加入网络流程

(1)开关结点初始化    这时选择的节点类型是终端节点,所以使用f8wEndev.cfg文件,所以在Zglobals.h文件中,我们可以得到下面的定义#define ZG_DEVICETYPE_ENDDEVICE        0x02#define DEVICE_LO ...…

查看全部问答>