微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM·中断控制器

ARM·中断控制器

时间:11-24 来源:互联网 点击:

GPFCON |= GPF0_eint | GPF2_eint;

// S4对应的引脚设为中断引脚EINT11

GPGCON &= ~GPG3_msk;

GPGCON |= GPG3_eint;

// 对于EINT11,需要在EINTMASK寄存器中使能它

EINTMASK &= ~(1<11);

PRIORITY = (PRIORITY & ((~0x01) | (0x3<7))) | (0x0 < 7) ;

// EINT0、EINT2、EINT8_23使能

INTMSK &= (~(1<0)) & (~(1<2)) & (~(1<5));

}

红色部分,便是我们这章的重点内容,也就是对中断寄存器的配置,init的初始化 。

这张图,前后反复提到,可以作为重点的参考图,结合下面这张s3c2440的中断源的表

(1)轮流按下K1-K4,可以看见LED1-LED4被轮流点亮 ;

(2)同时按下K3-K4,只有LED4被点亮;

(3)同时按下K1-K2,LED1,LED2被点亮;

(4)同时按下所有按键,只有LED4被点亮;

CPU与外设之间的数据传送控制方式,通常有以下三种:

*查询方式

*中断方式

*DMA方式(Direct Memory Access)

直接内存存取是数字信号处理器DSP用于快速数据交换的重要技术

独立于CPU后台批量数据传输能力

*中断请求

*中断仲裁

*中断响应

*中断处理

*中断返回

中断处理流程:

(1)中断控制器捕获当前外设发出的中断信号,通知soc

(2)soc保存当前程序的运行环境,然后调用中断服务程序来处理中断

(3)ISR中通过读取中断控制寄存器、外设的相关寄存器来是哪一个中断触发,获取硬件中断号IRQ,跳转到相应的地方完成中断

(4)清楚中断:通过读写相关中断控制寄存器和外设相关的寄存器来实现

(5)最后恢复被中断程序的环境,继续执行

(太多)

这里关于一级中断和二级中断源的一个处理

(EINT8_23,ENT4_7)


当一个中断响应,我们可以通过相应地控制寄存器对中断进行定性的控制,也就是操作这些寄存器 ;

*源挂起寄存器 SRCPND (与SUBSRCPND相似)

*中断模式寄存器 INTMOD (选择中断模式,设置为0:IRQ中断;设置为1:FIQ中断)

*中断屏蔽寄存器 INTMASK (用来配置SRCPND的中断是否被屏蔽)(只能屏蔽IRQ)

*中断优先级寄存器 PRIOPITY

*中断挂起寄存器 INTPND (选择优先级最高的一个中断,置1)

*确认中断源寄存器 INTOFFSET (对应INTPND)

*子中断源源挂起寄存器 SUBSRCPND(清中断时往SUBSRCPND寄存器中的对应位写入1)

*子中断屏蔽寄存器 INTSUBMASK(设置为1:对应子中断被屏蔽 ;设置为0:表示子中断允许)

(关于 挂起:有人说的很好,挂起是被翻译过来的,英文是Pending,另一个意思更加准确:等待被执行)

(多个中断一起响应的时候,优先级更高的中断先执行,其他被挂起)

*外部中断控制寄存器EXTINTx

*外部中断屏蔽寄存器EINTMASK

*外部中断挂起寄存器EINTPEND

(1)EXTINTx



设置可以控制低电平触发,高电平触发,下降沿触发,上升沿触发,边沿触发

(2)外部中断屏蔽寄存器


(3)外部中断挂起寄存器


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top