当前位置:首页 > 单片机 > 单片机
[导读]简要复习一下ARM9中断控制器的控制过程:1.首先能识别触发的中断(对应中断源必须打开,然后查询当前中断状态寄存器),硬件会操控PC跳到中断向量入口(IRQ_HANDLE,硬件控制的只要是IRQ中断类型就会进入),在中断跳

简要复习一下ARM9中断控制器的控制过程:

1.首先能识别触发的中断(对应中断源必须打开,然后查询当前中断状态寄存器),硬件会操控PC跳到中断向量入口(IRQ_HANDLE,硬件控制的只要是IRQ中断类型就会进入),在中断跳转函数里面保存现场(保存R0等等工作寄存器)--跳到服务函数(里面进行中断源判断和处理)---恢复现场,基本流程是这样。

2.中断的触发:高低电平,上升下降沿等等,具体的设置寄存器实现。

3.中断能否传到CPU?触发以后还要通过许多开关(寄存器设置使能与否)确保到达CPU,这样CPU才能识别(有的中断源是不需要的),有些中断是二级中断,需要开关比较多,注意芯片手册说明

4.

比如我们要触发的是INT_TC这个二级中断信号。好,那么我们要打开的开关是什么呢?在二级中断信号里,INTSUBMSK是二级中断信号的开关,我们要在里面找到INT_TC这个位并设置为1即可。二级中断还得传到一级中控器处理,那么我们先找出INT_TC是属于哪个一级中断信号的,看表里的紫色框起来的是二级属于同一个一级信号的,一级信号处理那个也有个紫色框,INT_ADC就是我们要找到的对应一级信号。而它也有对应的开关,那么就是INTMSK这个控制器。我们把INTMSK里的INT_ADC位设置为1就算成功了。

代码也就是

INTSUBMSK"=(0x1<<9);//因为INT_TC在INTSUBMSK里的第9位,注意从0开始

INTMSK|=(0x1<<31);//INT_ADC在INTMSK里的第31位。

其他的类似外部中断也是这样操作。只是一级中断的可以直接从一级中控器处理,那么就只设置一级中控器的相应开关即可。也就是说,我们要用到的设备接口,我们就把相应的开关打开就可以了,其他的让ARM来处理就可以了。

5.EIN4_7属于一级中断源,但是该中断源包含EIN4EIN5EIN6EIN7四个子中断源。

SRCPND源挂起寄存器。

该寄存器在中断源发出请求时候,处理器就会自动置位该寄存器的相应的位为1.

注意:根据三星文档知道,该位不受寄存器影响,这个寄存器是屏蔽寄存器。在则在执行服务程序时候,该位不许进行清除,否则会导致连续中断。清除方法是往该位写入1。

INTMOD中断模式寄存器

该寄存器决定中断源为FIQ中断还是IRQ中断。

注意:根据三星文档,INTPND寄存器和INTOFFSET寄存器只对IRQ模式有效

INTMSK中断屏蔽寄存器

决定是否屏蔽某中断源

注意:没有

PRIORITY优先级寄存器

决定中断源优先级。

INTPND中断服务程序标志位

根据文档说,在中断源没被屏蔽,并且在等待中断服务,优先级也是最最高的置1.啥意思,就是该寄存器对应位置1,表示CPU已经响应该对应的中断请求。

注意:和SRCPND一样,在中断服务程序时候要清除该对应位。

INTOFFSET寄存器

该寄存器和INTPND配合使用的。标明INTPND寄存器里对应IRQ中断反映在INTOFFSET寄存器的值

注意:也需要清除位

SUBSRCPND寄存器

该寄存器与.SRCPND寄存器配合使用,在子中断源发出请求时候,处理器就会自动置位该寄存器的相应的位为1.

INTSUBMSK寄存器

该寄存器和INTMSK寄存器一样,只不过是相对于子中断而言而已。

6.借用别人网站的图

其中深黑色的就是编程要用的寄存器,而浅黑色的寄存器时CPU根据我们配置的寄存器产生的标志位寄存器。

7.最后我感觉和51还是比较类似的,设置引脚为外部中断(有的是内部中断),使能,确定优先级,识别到触发,保存现场,处理,恢复现场。嵌入式linux的程序需要和汇编一起组织,目前不是特别熟悉,学习ing~


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本文基于ARM9芯片的S3C2440和Linux操作系统,设计了一种SPI驱动程序,该驱动程序功能可靠灵活、易于移植,可应用于多种嵌入式平台,实现ARM与设备之间的通信。

关键字: S3C2440 SPI arm9 Linux ARM

摩托罗拉改进LTE自组织网络解决方案      摩托罗拉公司网络部宣布,对其获奖解决方案LTE自组织网络(SON)进行了数项功能改良,以实现更佳网络

关键字: 处理器 arm9

摘要:本文阐述了嵌入式ARM9系统在发射台自动化系统中的应用,主要实现对发射机的自动化监控,其良好的可在线编程功能,大大增进了友射台管理和减少因软件更新所带来的维护成本。1.概述  

关键字: 监控 无线 arm9

    CDMA(码分多址)网络具有覆盖面广,高效、低成本的特点,CDMA网络的数据传输速率可达200kb/s,这里开发的嵌入式远程视频系统就是充分利用CDMA网络技术和嵌入式

关键字: arm9 远程视频

众所周知,ARM9系列处理器是英国ARM公司设计的主流嵌入式处理器,主要包括ARM9TDMI和ARM9E-S等系列,基于arm9其它公司推出了自己的CPU芯片,如三星推出了S3C2440。还有TI啊,ATMEL啊,高通啊...

关键字: arm9 cpu芯片 处理器

[点此回顾上课学习内容] S3C2440的中断分为两大类: 外部中断 和 内部中断. 一 外部中断 EXTINT[x]: 用来配置各个引脚的中断触发方式 (高电平触发、低电平触发

关键字: 中断控制器 jz2440中断

在目前我们生活当中,充满着数量不断增长的微型电池供电设备及系统。这些嵌入式系统必须长期使用相同的电源供电,才能降低反复出现的维护成本或避免最终用户频繁更换电源。

关键字: 中断控制器 嵌入式开发 嵌入式系统 晶体管

11年就买了2440的板子,但是一直放在那吃灰,最近拿出来玩了下,调通linux和windows下的基本环境就不说了,都是网上找的资料。linux下安装gcc,samba。        现在我们需要

关键字: arm9 Linux

#include "def.h"#include "option.h"#include "2410addr.h"#include "2410lib.h...

关键字: arm9 mmu

LPC2478的中断系统LPC2478使用的是ARM PrimeCell向量中断控制器,一共支持32个中断向量,处于AHB空间便于系统快速访问,在中断向量的硬件优先级上还有一层可以用户自己设计的软件优先级,由于是ARM7...

关键字: lpc2478 中断控制器 串口
关闭
关闭