0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Cortex-M0处理器的电平触发和脉冲输入

安芯教育科技 来源:灵动MM32MCU 2023-03-22 10:33 次阅读

Cortex-M0处理器允许两种形式的中断请求:电平触发和脉冲输入。

电平触发是外设的中断请求有持续的电平信号,若电平信号在处理器从ISR返回之前没有被取消,则中断返回后将再次触发已经服务过的中断。

脉冲中断是在信号的上升沿同步采样的中断信号,为了确保NVIC检测到中断,外设必须维持中断信号至少一个时钟周期,在此期间,NVIC检测脉冲和锁存中断。后续的脉冲可以将暂挂状态加到活动中断中,使状态为中断活动且挂起。然而,在有限周期内发生的多个脉冲只登记作为中断调度的单个事件。

哪些中断是电平触发的,哪些是脉冲触发的,具体选择哪一种是根据芯片设计来决定,不过大多数的外设使用电平触发中断输出。

一、电平触发和脉冲输入

Cortex-M0处理器锁存所有中断,外围中断成为等待其中一个原因是:

NVIC检测到中断信号被置位并且对应的中断不是active

NVIC检测到中断信号的上升沿

软件写入相应的中断集挂起寄存器

挂起的中断将一直挂起,直到下列情况之一发生:

处理器为中断进入ISR,这将改变中断的状态等待活跃:

对于电平触发型中断,当处理器从ISR返回时,NVIC采样中断信号。如果中断信号仍然有效,表示中断的状态更改为pending,这可能会导致处理器立即重新进入ISR。否则,中断的状态将变为非活动状态。

对于脉冲触发型中断,NVIC继续监视中断信号,如果这样触发时,中断状态变为挂起和活动状态。在这种情况下,当处理器从ISR返回中断状态时,中断状态变为挂起状态可能会导致处理器立即重新进入ISR。如果中断信号不是脉冲而处理器是在ISR,当处理器从ISR返回中断状态变为非活动状态。

软件写入相应的中断清除寄存器位。

对于电平触发型中断,如果中断信号仍然有效,则中断的状态中断不会改变。否则,中断的状态将变为非活动状态。
对于脉冲中断,中断状态变为:

inactive,如果状态是pending

active,如果状态是活动的和挂起的

二、中断处理

当中断事件发生时,由于外设连接到了NVIC上,中断信号就会得到确认。在处理器执行中断服务并且没有清除外设的中断的信号以前,该信号会保持高电平。在NVIC内部,当检测到有中断发生时,该中断的挂起状态会被置位,当处理器接受该中断并且开始执行中断服务后,挂起状态就会被清除。

c937fe86-c858-11ed-bfe3-dac502259ad0.png

针对脉冲输入的中断请求,这种情况下,在中断得到服务之前,挂起状态寄存器将会一直保持该请求。

c958bb44-c858-11ed-bfe3-dac502259ad0.png

如果中断请求没有立即执行,并且在确认之前被软件清除了,处理器将会忽略掉本次请求,并且不会执行中断处理。

如果在软件清除挂起状态时,外设仍然保持着中断请求,挂起状态寄存器还会立即生成。

三、中断等待

通常情况下,处理器的中断等待时间为16个周期,这个等待时间从中断确认的处理器时钟周期开始,一直到中断处理开始执行结束。

计算中断等待需具备以下前提:

该中断使能并没有PRIMASK或者其他正在执行的异常处理所屏蔽1

存储器系统没有任何等待状态,在中断处理、压栈、取向量表或者中断处理开始时取指都会用到总线传输,如果存储器系统需要等待,那么总线传输时产生的等待状态则可能使得中断延迟。

下面几种情况可能会导致不同的中断等待:

中断的咬尾连锁,如果一个中断返回时立即产生另外一个中断请求,处理器就会跳过出栈和压栈时间,减少了中断等待时间。

延迟到达,如果中断发生时,另外一个低优先级中断正在进行压栈处理,由于延迟到达,高优先级的中断就会立即执行,这样会导致高优先级的中断等待时间减少。

四、异常屏蔽寄存器PRIMASK

有些对时间敏感的应用,需要在短时间内禁止响应所有的中断,对于这种应用,处理器不是直接使用中断使能、禁止控制寄存器来禁止所有中断再恢复,而是一个单独的特殊寄存器 - PRIMASK,通过它可以屏蔽掉除了NMI和HardFault异常的其他的所有的中断和系统异常。

PRIMASK寄存器只有1位有效,并且在复位后默认为0。该寄存器为0时,所有的中断和异常都处于允许状态,设置为1后,只有NMI和HardFault处于使能状态。

MOVSR0,#0x1;//中断#2
MSRPRIMASK,R0;//将R0的值送到PRIMASK

NVIC编程提示软件使用CPSIE i和CPSID i指令来启用和禁用中断。

CPSIEi;//清除PRIMASK(使能中断)
CPSIDi;//设置PRIMASK(不响应中断)

CMSIS设备驱动库提供了C语言的实现函数,用户可以直接使用函数来设置和清除PRIMASK寄存器:

void__disable_irq(void)//不响应中断
void__enable_irq(void)//启用中断

在对时间敏感的程序完成后,应该清除PRIMASK。要不然即使在中断处理中使用__disable_irq()函数,处理器将停止接受新的中断请求。主要原因是PRIMASK寄存器和Xpsr是相互独立的,因此异常返回不会影响中断屏蔽状态。

五、NVIC使用提示

确保软件使用正确对齐的寄存器访问,处理器不支持对 NVIC 寄存器的未对齐访问。

即使中断被禁用,它也可以进入挂起状态。

禁用中断只能防止处理器处理中断。

在对中断向量表重定义之前,必须包含所有的异常中断,例如 NMI、HardFault 和外设中断等。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    67

    文章

    16679

    浏览量

    219915
  • Cortex-M0
    +关注

    关注

    4

    文章

    98

    浏览量

    38172
  • ISR
    ISR
    +关注

    关注

    0

    文章

    33

    浏览量

    14231
  • NVIC
    +关注

    关注

    0

    文章

    32

    浏览量

    11263
  • 中断控制
    +关注

    关注

    0

    文章

    24

    浏览量

    8755
收藏 人收藏

    评论

    相关推荐

    Cortex-M0处理器的基础知识

    Cortex-M0处理器介绍
    发表于 02-26 06:03

    制造一种基于Cortex-M0Cortex-M3处理器的SoC

    Cortex-M0Cortex-M3处理器的SoC,当产品成功量产出货之后再支付版税。ARM
    发表于 07-27 16:58

    ARM Cortex-M0设计启动评估用户指南

    Cortex-M0 DesignStart Eval为开发人员提供了一种简单的方法来模拟基于Cortex-M0处理器的SoC设计。 它允许系统设计人员在模拟
    发表于 08-18 07:58

    ARM推出CortexM0处理器

    CortexM0处理器,有需要的下来看看 。
    发表于 01-22 14:00 27次下载

    Cortex-M0处理器的存储模型资料下载

    Cortex-M0处理器的存储模型资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-08 08:40 10次下载
    <b>Cortex-M0</b><b>处理器</b>的存储模型资料下载

    Cortex-M0处理器的异常处理模型资料下载

    Cortex-M0处理器的异常处理模型资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-08 08:41 15次下载
    <b>Cortex-M0</b><b>处理器</b>的异常<b>处理</b>模型资料下载

    Cortex-M0处理器的故障处理和功耗管理资料下载

    Cortex-M0处理器的故障处理和功耗管理资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-08 08:42 4次下载
    <b>Cortex-M0</b><b>处理器</b>的故障<b>处理</b>和功耗管理资料下载

    Cortex-M0处理器的编程模型资料下载

    Cortex-M0处理器的编程模型资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-11 08:42 12次下载
    <b>Cortex-M0</b><b>处理器</b>的编程模型资料下载

    Cortex-M0处理器及其特性资料下载

    Cortex-M0处理器及其特性资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-13 08:47 15次下载
    <b>Cortex-M0</b><b>处理器</b>及其特性资料下载

    ARM Cortex-M0处理器内核LPC1100系列微控制

    Cortex-M0处理器内核的LPC1100系列微控制。该处理器是ARM公司Cortex-M系列尺寸最小的一款,具有32位架构性能、低功耗和超小封装等优点。LPC1100是恩智
    发表于 08-31 09:09 2987次阅读
    ARM <b>Cortex-M0</b><b>处理器</b>内核LPC1100系列微控制

    基于ARM Cortex-M0处理器的LPC1200工业控制系列

    Cortex-M0处理器的LPC1200工业控制系列。LPC1200进一步拓展了恩智浦32位ARM微控制的产品范围,适用于工业和家庭自动化领域一系列广泛的工业应用
    发表于 02-24 10:00 1142次阅读

    ARM为主流嵌入式SoC设计提供免费的Cortex-M0处理器IP

    Cortex-M0处理器进行商业化之前的SoC元件的设计、原型建模和制造的设计人员提供免费的Cortex-M0处理器IP,以及低成本的FPGA原型建模。
    发表于 10-15 13:57 2463次阅读

    采用ARM Cortex-M0处理器内核 英飞凌XMC1302马达控制解决方案

    的成员,采用ARM Cortex-M0处理器内核。 XMC1300系列解决了控制需要电机控制,数字电源转换的实时性问题。它还具有外设LED照明应用。
    发表于 08-04 09:42 8381次阅读
    采用ARM <b>Cortex-M0</b><b>处理器</b>内核  英飞凌XMC1302马达控制解决方案

    Cortex-M0处理器的中断请求形式:电平触发脉冲输入

    Cortex-M0处理器允许两种形式的中断请求:电平触发脉冲输入
    的头像 发表于 05-13 12:05 1108次阅读

    Cortex-M0处理器电平触发脉冲输入

    电平触发型中断,当处理器从ISR返回时,NVIC采样中断信号。如果中断信号仍然有效,表示中断的状态更改为pending,这可能会导致处理器立即重新进入ISR。否则,中断的状态将变为非活动状态。
    的头像 发表于 05-16 09:10 695次阅读