基于ARM9芯片S3C2410异常中断程序设计

出处:chunyang 发布于:2008-08-28 14:34:16

  验证的代码详细分析了基于ARM嵌入式系统的异常处理流程,本文结合经过实际验证的代码对ARM9中断处理流程进行分析,并设计出基于S3C2410芯片的外部中断处理程序。 Arm9 arm9处理器 arm处理器 嵌入式系统 嵌入式

  S3C2410X 的中断控制寄存器能接收来自56个中断源的请求。内部的外围模块和外部管脚产生的多个中断请求通过中断控制器冲裁后,向ARM920T核发出FIQ或者 IRQ中断。ARM内核只有2个外部中断输入信号nIRQ和nFIQ,在具体嵌入式系统中,需要用中断控制器管理多个外部中断源,选择其中一个中断,通过 nIRQ或nFIQ向ARM内核发出中断请求。

  ARM920T内核可以识别正常中断请求和快速中断请求两种类型的外部中断,中断的行为模式由中断控制器来设置。S3C2410X的中断控制器包括6类寄存器:中断源状态寄存器、中断模式寄存器、中断屏蔽寄存器、优先级寄存器、中断状态寄存器,以及中断偏移寄存器。

  在初始化程序中,需要选择相应管脚的功能,在此定义GPF3为EINT3模式,通过外部中断控制寄存器EXTINT0设定EINT3是下降沿触发方式,通过设置中断源悬挂寄存器SRCPND、中断悬挂寄存器INTPND和中断屏蔽寄存器INTMSK开启EINT3。中断模式寄存器和中断优先级寄存器采用系统默认方式。具体代码实现如下:

  void Eint_Init(void){

  rGPFCON = (rGPFCON & 0x3f0c)|(1<<7);

  rEXTINT0 = (rEXTINT0 & ~(0x7<<12)) | 0x2<<12;

  pISR_EINT3=(U32)Eint3Int;

  rSRCPND = BIT_EINT3;

  rINTPND = BIT_EINT3;

  rINTMSK=~( BIT_EINT3);

  }

  如果采用EINT4~EINT23之间的中断源,还需要设置外部中断悬挂寄存器EINTPEND和外部中断掩码寄存器EINTMASK的相关位。

  在C语言的Main()程序中调用Eint_Init()函数,即可完成中断处理的初始化操作。       若外部下降沿信号接到GPF3管脚,就可以调用Eint3Int中断处理函数。

  总之,本文采用的异常处理程序设计方式灵活可靠,可以在系统运行期间动态修改中断向量表,利用C语言也可实现中断处理函数的动态配置。在所设计的键盘处理程序中采用该方法,取得了很好地效果,该方法具有很强的通用性。

      欢迎转载,信息来自维库电子市场网(www.dzsc.com



  

参考文献:

[1]. S3C2410X  datasheet https://www.dzsc.com/datasheet/S3C2410X+_589566.html.
[2]. ARM920T datasheet https://www.dzsc.com/datasheet/ARM920T_139814.html.


关键词:基于ARM9芯片S3C2410异常中断程序设计S3C2410S3C2410X

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站客服电话

0571-85317606

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!