STM32中断过程详解

发布时间:2023-06-06  

对于 STM32 讲(还是以Timer2例),外部中断通道位置 28(35 号优先级)是给外部设备 TIME2 的,但 TIME2本身能够引起中断的中断源或事件有好多个,比如更新事件(上溢/下溢) 、输入捕获、输出匹配、DMA 申请等。所有TIME2 的中断事件都是通过一个 TIME2 的中断通道向 STM32 内核提出中断申请,那么 STM32 中如何处理和控制 TIME2 和它众多的、不同的、中断申请呢?


1.因为cortex_m3 内核对于每一个外部中断通道都有相应的控制字和控制位,用于单独的和总的控制该中断通道。它们包括有:

中断优先级控制字:PRI_n(前面有提到过)

中断允许设置位:在 ISER 寄存器中

中断允许清除位:在 ICER 寄存器中

中断悬挂 Pending(排队等待)位置位:在 ISPR 寄存器中(类似于置中断通道标志位)

中断悬挂 Pending(排队等待)位清除:在 ICPR 寄存器中(用于清除中断通道标志位)

正在被服务(活动)的中断(Active)标志位:在 IABR 寄存器中, (只读,可以知道当前内核正在处理哪个中断通道)


2.作为外围设备 TIME2 本身也包括更具体的,管理自己不同中断的中断控制器(位) ,它们主要是自身各个不同类型中断的允许控制位, 和各自相应的中断标志位 (STM32 的手册中有详细的说明) 。

理解上面两点之后,我们可以全程、全面和综合的来了解 TIME2 的中断过程,以及如何控制的。

①初始化过程

首先要设置寄存器 AIRC 中 PRIGROUP 的值, 规定系统中的抢先优先级和子优先级的个数(在 4 个 bits 中占用的位数) ;

设置 TIME2 本身的寄存器,允许相应的中断,如允许 UIE(TIME2_DIER 的第[0]位)

设置 TIME2 中断通道的抢先优先级和子优先级(IP[28],在 NVIC 寄存器组中)

设置允许 TIME2 中断通道。在 NVIC 寄存器组的 ISER 寄存器中的一位。

②中断响应过程

当 TIME2 的 UIE 条件成立(更新,上溢或下溢) ,硬件将 TIME2 本身寄存器中 UIE 中断标志置位,然后通过 TIME2 中断通道向内核申请中断服务。

此时内核硬件将 TIME2 中断通道的 Pending 标志置位(相当与中断通道标志置位) ,表示 TIME2 有中断申请。

如果当前有中断在处理,TIME2 的中断级别不够高,那么就保持 Pending 标志,当然用户可以在软件中通过写 ICPR 寄存器中相应的位把本次中断清除掉。

当内核有空,开始响应 TIME2 的中断,进入 TIME2 的中断服务。此时硬件将 IABR 寄存器中相应的标志位置位, 表示 TIME2 中断正在被处理。 同时硬件清除 TIME2 的 Pending 标志位。

③ 执行 TIME2 的中断服务程序

所有 TIME2 的中断事件, 都是在一个 TIME2 中断服务程序中完成的, 所以进入中断程序后, 中断程序需要首先判断是哪个 TIME2 的具体事件的中断, 然后转移到相应的服务代码段去。

注意不要忘了把该具体中断事件的中断标志位清除掉, 硬件是不会自动清除 TIME2 寄存器中具体的中断标志位的。

如果 TIME2 本身的中断事件多于 2 个, 那么它们服务的先后次序就由用户编写的中断服务决定了。换句话说,对于 TIME2 本身的多个中断的优先级,系统是不能设置的。所以用户在编写服务程序时,应该根据实际的情况和要求,通过软件的方式,将重要的中断优先处理掉。

当然你也可以每次中断服务只处理其中的一个,然后再次进入中断,处理下一个。

④中断返回

内核执行完中断服务后,便进入中断返回过程,在这个过程中需要:

硬件将 IABR 寄存器中相应的标志位清另,表示该中断处理完成如果 TIME2 本身还有中断标志位置位,表示 TIME2 还有中断在申请,则重新将 TIME2的 Pending 标志置为 1,等待再次进入 TIME2 的中断服务。


以上中断过程在《ARM Cortex-M3 权威指南》中有详细描述,并配合时序图说明,可以参考。

然后,就可以在 ST 提供的函数库的帮助下,正确的设置和使用 STM32 的中断系统了。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    源来自CPU外部,由外设提出请求。 中断过程:一个完整的中断传送方式的处理过程应包括中断请求、中断优先权判别、中断响应、中断处理和中断返回等几个步骤中断源: (1)INTO:外部中断0请求......
    串口的整体初始化流程我们便不多说了,大体分为以下几个步骤: 串口时钟使能,GPIO时钟使能 GPIO端口模式设置 串口参数初始化:USART_Init(); 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤) 使能......
    。 而同级别的中断源,则不能互相中断,不能形成中断嵌套;低级别中断申请,就更不能中断高级别中断过程的了。 中断的优先级,是个......
    DS1402D-3数据手册和产品信息;这里描述了用于构建DS1402D-DR8和DS1402D-DB8 Blue Dot™ i Button®读写探头的四个组成部分。完整数据资料中的图1至图4给出......
    泰克示波器的触发原理及稳定触发的三个步骤;在使用时首先要得到稳定触发的波形,这样才能保证后续的测量、解码等高级功能的可靠性。现在数字的触发功能越来越强大,从常规触发,到协议触发,再到模板触发,越来......
    开通的信号功率为零; -- 开通过程的时间为零。 K 的关断 -- 控制关断的信号功率为零; -- 关断过程的......
    等,在后面的视频中将实操演示. 4. 工业生产过程往往从逻辑上划分为多个步骤,当满足某种条件时,生产过程就从一个步骤跳转到另一个步骤,这些步骤便构成了生产工艺,比如水处理砂滤反冲洗过程主要为:正常......
    基于C51中断过程及interrupt和using的使用;8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位定时计数器;全双工串行通信;6 个中断......
    原则的详细阐述。 一、ECRS原则定义 ECRS原则起源于工业工程学的程序分析,是优化生产工序和工作流程的有效工具。具体来说,这四个步骤......
    学习STM32的思路和关键步骤;首先设定一个的两周入门计划: 所谓的“两周”,根据每个人的时间安排不同而不同。这里列出一个思路,仅供参考。 步骤一:安装完STM32学习的软件 步骤二:挑选部分例程的......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>