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

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

3天内不再提示

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

strongerHuang 来源:极术社区 作者:极术社区 2022-05-16 09:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Cortex-M0处理器允许两种形式的中断请求:电平触发和脉冲输入 电平触发是外设的中断请求有持续的电平信号,若电平信号在处理器从ISR返回之前没有被取消,则中断返回后将再次触发已经服务过的中断。 脉冲中断是在信号的上升沿同步采样的中断信号,为了确保NVIC检测到中断,外设必须维持中断信号至少一个时钟周期,在此期间,NVIC检测脉冲和锁存中断。后续的脉冲可以将暂挂状态加到活动中断中,使状态为中断活动且挂起。然而,在有限周期内发生的多个脉冲只登记作为中断调度的单个事件。 哪些中断是电平触发的,哪些是脉冲触发的,具体选择哪一种是根据芯片设计来决定,不过大多数的外设使用电平触发中断输出。
1. 电平触发和脉冲输入

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

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

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

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

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

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

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

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

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

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

对于脉冲中断,中断状态变为:

  • inactive,如果状态是pending

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

2. 中断处理

当中断事件发生时,由于外设连接到了NVIC上,中断信号就会得到确认。在处理器执行中断服务并且没有清除外设的中断的信号以前,该信号会保持高电平。

在NVIC内部,当检测到有中断发生时,该中断的挂起状态会被置位,当处理器接受该中断并且开始执行中断服务后,挂起状态就会被清除。

15ed846c-d4b2-11ec-bce3-dac502259ad0.png

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

1646a740-d4b2-11ec-bce3-dac502259ad0.png

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

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

3. 中断等待

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

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

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

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

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

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

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

4. 异常屏蔽寄存器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是相互独立的,因此异常返回不会影响中断屏蔽状态。

5. NVIC使用提示

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

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

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

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

审核编辑 :李倩


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

    关注

    68

    文章

    20325

    浏览量

    254693
  • 单片机
    +关注

    关注

    6078

    文章

    45569

    浏览量

    673312
  • 电平
    +关注

    关注

    5

    文章

    373

    浏览量

    41772

原文标题:单片机中断电平触发和脉冲输入

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度解析LPC43S50/S30/S20:32位ARM Cortex-M4/M0微控制的卓越性能与应用潜力

    下载: LPC43S30FBD144E.pdf 一、概述 LPC43S50/S30/S20是基于ARM Cortex-M4内核的微控制,集成了ARM Cortex-M0处理器,适用
    的头像 发表于 04-09 09:45 106次阅读

    探秘Neuron® 5000处理器:LONWORKS控制网络的新利器

    探秘Neuron® 5000处理器:LONWORKS控制网络的新利器 在电子工程师的世界里,寻找高性能、低成本的解决方案一直是我们不懈追求的目标。今天,就让我们一起深入了解Neuron® 5000
    的头像 发表于 03-28 09:05 226次阅读

    ADSP-21593/21594/ADSP-SC592/SC594处理器:高性能与多功能的完美融合

    ADSP-21593/21594/ADSP-SC592/SC594处理器:高性能与多功能的完美融合 在当今的电子设计领域,对于高性能、多功能处理器的需求日益增长。ADSP-21593/21594
    的头像 发表于 03-23 16:50 609次阅读

    高性能音频处理利器:ADSP - 21477/ADSP - 21478/ADSP - 21479处理器深度解析

    高性能音频处理利器:ADSP - 21477/ADSP - 21478/ADSP - 21479处理器深度解析 在当今的电子技术领域,高性能音频处理一直是一个备受关注的方向。而ADI公司的ADSP
    的头像 发表于 03-23 16:45 666次阅读

    Cortex-M0Cortex-M0+的区别

    咱们芯源MCU主要是Cortex-M0+处理器,那么Cortex-M0+比Cortex-M0处理器强在哪里呢?下面针对2者的关键特性对比进行
    发表于 01-22 06:23

    Cortex-M0 处理器介绍

    功耗的32位处理器Cortex-M0Cortex-M家族中的M0系列。最大特点是低功耗的设计。Cortex-M0为32位、3级流水线R
    发表于 01-16 08:04

    Cortex-M产品的特色

    低功耗设计:Cortex-M系列处理器核心被设计为低功耗架构,适用于移动电源和电池供电的嵌入式系统。 高性能处理Cortex-M处理器
    发表于 11-26 07:22

    Cortex-M0+处理器的HardFault错误介绍

    在ARM处理器中,如果一个程序产生了错误并且被处理器检测到,就会产生错误异常。Cortex-M0+处理器只有一种异常用以处理错误:HardF
    的头像 发表于 10-14 10:50 3632次阅读
    <b class='flag-5'>Cortex-M0</b>+<b class='flag-5'>处理器</b>的HardFault错误介绍

    MSPM0G1507 80MHz Arm® Cortex-M0®+ MCU技术手册

    MSPM0G150x 微控制 (MCU) 是 MSP 高度集成、超低功耗 32 位 MCU 系列的一部分,基于增强型 Arm Cortex-M0+ 32 位核心平台,工作频率高达 80 MHz
    的头像 发表于 09-30 09:08 1073次阅读
    MSPM<b class='flag-5'>0</b>G1507 80MHz Arm® <b class='flag-5'>Cortex-M0</b>®+ MCU技术手册

    在NuMicro® Cortex-M0® 系列中,每个I/O可以承受多少电流吸收和源电流呢?

    在 NuMicro® Cortex-M0® 系列中,每个 I/O 可以承受多少电流吸收和源电流?
    发表于 08-27 15:25

    请问NuMicro® Cortex-M0/M4系列可以提供哪些USB器件示例代码?

    NuMicro® Cortex-M0/M4系列可以提供哪些USB器件示例代码?
    发表于 08-19 07:05

    基于RK3576处理器,EASY EAI Orin Nano开发板免费试用

    EASY EAI Orin Nano是广州灵眸科技有限公司的旗舰级硬件产品。基于瑞芯微的RK3576处理器设计,集成了4个Cortex-A72和4个Cortex-A53及支持NEON指令集,支持
    的头像 发表于 06-09 15:01 1634次阅读
    基于RK3576<b class='flag-5'>处理器</b>,EASY EAI Orin Nano开发板免费试用

    国民技术能否开展一个M7处理器的试用活动。

    国民技术最近推出了M7处理器,看起来能力很强,电子发烧友能不能联合国民技术开展一个M7使用的活动,让大家了解下M7核的国民技术。
    发表于 05-20 22:04

    MAX32662 Arm Cortex-M4处理器,集成带256KB闪存和80KB SRAM的FPU微控制(MCU)技术手册

    -M4处理器相结合,采用小尺寸封装。 MAX32662支持基于边缘的复杂设计,且不影响电池寿命,它还为传统设计提供简单的低成本升级(从8位或16位微控制进行升级)。
    的头像 发表于 05-08 10:09 1298次阅读
    MAX32662 Arm <b class='flag-5'>Cortex-M</b>4<b class='flag-5'>处理器</b>,集成带256KB闪存和80KB SRAM的FPU微控制<b class='flag-5'>器</b>(MCU)技术手册

    国产!瑞芯微RK3506 3核ARM+Cortex-A7 + ARM Cortex-M0 工业评估板说明书

    创龙科技TL3506-EVM是一款基于瑞芯微RK3506J/RK3506B处理器设计的3核ARM Cortex-A7 + ARM Cortex-M0国产工业评估板,主频高达1.5GHz。评估板由
    的头像 发表于 04-29 15:42 3214次阅读
    国产!瑞芯微RK3506 3核ARM+<b class='flag-5'>Cortex</b>-A7 + ARM <b class='flag-5'>Cortex-M0</b> 工业评估板说明书