首页 > 其他分享 >Cortex-A7的GIC(通用中断控制器):边沿触发和电平触发中断的区别

Cortex-A7的GIC(通用中断控制器):边沿触发和电平触发中断的区别

时间:2024-09-17 12:50:28浏览次数:14  
标签:__ 触发 中断 电平 GIC 清空 GPIO

0 资料

ARM® Generic Interrupt Controller Architecture version 2.0 Architecture Specification

1 边沿触发和电平触发中断的区别

1.1 边沿触发和电平触发中断官方解释

边沿触发(Edge-triggered)

This is an interrupt that is asserted on detection of a rising edge of
an interrupt signal and then, regardless of the state of the signal,
remains asserted until it is cleared by the conditions defined by this
specification.

当检测到中断上升沿信号时会保持asserted状态(挂起状态),无论此后该中断信号如何变化都会保持asserted状态(挂起状态),直到按照GIC指定的操作将中断清除。
电平触发(Level-sensitive)

This is an interrupt that is asserted whenever the interrupt signal level is active, and deasserted whenever the level is not active.

当中断信号处于有效状态时中断处于asserted状态(挂起状态),当该信号处于无效状态(例如清空中断标志)则该中断会变为未激活状态。

asserted状态参考如下:
在这里插入图片描述

1.2 边沿触发和电平触发中断实验

1.2.1 中断配置为边沿触发

按照官方的解释来看,GIC配置为边沿触发,在触发了中断后会就会设置中断挂起位,即使后面人为清除中断标志中断仍然挂起。操作步骤如下:
(1)配置中断为边沿触发
在这里插入图片描述
(2)测试程序

void irq_test(void)
{
    __disable_irq();
    SET_BIT(EXTI->SWIER1, 1);
    __DMB();
    imx_printf("Get exti0 pend 1 : %d\r\n", IRQ_GetPending(EXTI0_IRQn));
    if (__HAL_GPIO_EXTI_GET_RISING_IT(GPIO_PIN_0) != 0x00U)
    {
        __HAL_GPIO_EXTI_CLEAR_RISING_IT(GPIO_PIN_0);
    }
    HAL_Delay(1000);
    imx_printf("Get exti0 pend 2 : %d\r\n", IRQ_GetPending(EXTI0_IRQn));
    __enable_irq();
}

测试程序非常简单,在软件触发外部中断后再人为清空中断标志,查看清空中断前后中断挂起位变化。
(3)测试结果
在这里插入图片描述
可以看到在清空中断标志前后中断均为挂起状态,和官方解释一致。

1.2.2 中断配置为电平触发

按照官方的解释来看,GIC配置为电平触发,在触发了中断后会就会设置中断挂起位,如果后面人为清除中断标志中断则会变为未激活状态。操作步骤如下:
(1)配置中断为电平触发
在这里插入图片描述
(2)测试程序

void irq_test(void)
{
    __disable_irq();
    SET_BIT(EXTI->SWIER1, 1);
    __DMB();
    imx_printf("Get exti0 pend 1 : %d\r\n", IRQ_GetPending(EXTI0_IRQn));
    if (__HAL_GPIO_EXTI_GET_RISING_IT(GPIO_PIN_0) != 0x00U)
    {
        __HAL_GPIO_EXTI_CLEAR_RISING_IT(GPIO_PIN_0);
    }
    HAL_Delay(1000);
    imx_printf("Get exti0 pend 2 : %d\r\n", IRQ_GetPending(EXTI0_IRQn));
    __enable_irq();
}

测试程序非常简单,在软件触发外部中断后再人为清空中断标志,查看清空中断前后中断挂起位变化。
(3)测试结果
在这里插入图片描述
可以看到在清空中断标志前中断为挂起状态,清空后为非挂起状态(未激活状态),和官方解释一致。

标签:__,触发,中断,电平,GIC,清空,GPIO
From: https://blog.csdn.net/kevin1499/article/details/142312232

相关文章

  • Cortex-A7的GIC(通用中断控制器):边沿触发和电平触发中断处理流程
    0资料ARM®GenericInterruptControllerArchitectureversion2.0ArchitectureSpecification1边沿触发和电平触发中断处理流程1.0边沿触发和电平触发的区别边沿触发(Edge-triggered)Thisisaninterruptthatisassertedondetectionofarisingedgeofa......
  • Cortex-A7:__disable_irq和GIC_DisableIRQ、__enable_irq和GIC_EnableIRQ的区别(2)——AP
    0相关资料ARM®GenericInterruptControllerArchitectureversion2.0.pdf1API测试对比1.1__disable_irq同时GIC_DisableIRQ验证程序如下:voidgic_test(void){__disable_irq();GIC_DisableIRQ(UART4_IRQn);}测试结果:所有中断都无法响应。1.2_......
  • 3.4.1.2 IPIPE对Linux中断号的改造
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客3.4.1.2IPIPE对Linux中断号的改造    在IPIPEdomain中,IPIPE_NR_IRQS代表中断总数量,在代码中经常用到,最具代表的就是下图中定义structipipe_irqdescirqs[IPIPE_NR_IRQS].        先列一......
  • 蓝桥杯【物联网】零基础到国奖之路:六. 中断
    蓝桥杯【物联网】零基础到国奖之路:六.中断第一节中断理论1,中断的作用2,中断和异常3,NVIC中断控制器4,中断的分类5,中断管理机制第二节GPIO中断1,CubeMX配置2,添加中断代码第一节中断理论举个例子:工作时电话响了,这时你会把手里的工作停下来,然后接电话,电话里的人安排你......
  • 20240913_155935 mysql 触发器
    建表需求创建一个日志表记录teacher表的操作日志情况增删改的相关信息要保存起来方便定期查看明确字段表名:log_info列信息idactioninfotime创建表格CREATETABLElog_info( idINTPRIMARYKEYAUTO_INCREMENT, action_nameVARCHAR(11), infoVARCHAR(111), act_......
  • USB总线-Linux内核USB3.0设备控制器中断处理程序分析(九)
    1.概述USB设备枚举、请求处理、数据交互都涉及USB设备控制器中断。当有事件发生时,USB设备控制器首先将事件信息通过DMA写入到事件缓冲区中,然后向CPU发出中断,随后CPU调用中断处理函数开始处理中断事件。2.事件dwc3USB设备控制器事件使用dwc3_event数据结构描述,由4个字节组成。......
  • STM32 -中断
    并发(Concurrency)并发是指同时处理多个任务的能力,但并不意味着这些任务实际上是在同一时刻物理上同时运行的。在单处理器或多处理器系统中,并发通过时间片轮转(time-slicing)等技术实现,这些技术使得操作系统可以在多个任务之间快速切换,从而在宏观上给用户造成所有任务都在同时运行......
  • jenkins远程启动任务--启用远程触发构建
    一:前言在执行Jenkins的项目构建的时候,一般都是通过web管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建。 二:设置用户token打开当前登录用户设置页面......
  • jackson 原生反序列化触发 getter 方法
    jackson原生反序列化触发getter方法jackson的POJONode方法可以任意调用getterjackson序列化会任意调用getter分析jackson序列化会调用任意getter方法,jackson反序列化也会任意调用getter,这两个都不需要多说什么了,在前面的jackson反序列化中的TemplatesImpl......
  • UNO 已知问题 在后台线程触发 SKXamlCanvas 的 Invalidate 且在 PaintSurface 事件抛
    本文记录一个UNO已知问题,在UNO里面可以利用SKXamlCanvas对接Skia绘制到应用里面。如果此时在后台线程里面调用SKXamlCanvas的Invalidate触发界面的重新刷新,但在具体的执行绘制PaintSurface事件里面对外抛出异常,将会导致应用炸掉背景:我准备在UNO里面将Microsoft......