- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
刘彦文《基于ARM的嵌入式系统原理及应用》第7章
7.9 S3C2410A中断程序举例 【例7.4】 对于某公司生产的基于S3C2410X的开发板,假设4个开关分别连接到S3C2410X(S3C2410X与S3C2410A功能完全相同)芯片的GPF0/GPF2/GPG3/GPG11引脚,这4个引脚设置为中断请求引脚,与中断请求和中断处理相关的内容有: (见P293-297) 【例7.5】 以下代码是测试外部中断EINT0、EINT2、EINT11、EINT19的程序。前面是另一个程序中的一段代码,定义了一些位及清除登记位的宏;后面是测试程序;此外在包含的头文件中,已经对中断进行过初始化设置。 在测试程序中,先定义了EINT0、EINT2、EINT11或EINT19的中断服务程序。中断服务程序中调用宏,清除了源登记寄存器/中断登记寄存器中的登记位(中断请求位);对于EINT11或EINT19,还要清除外部中断登记寄存器中的中断请求位。所谓清除,即给该位写入1,这1位就变0了。此外还输出相应的信息,表明出现了哪一个中断请求。 在Test_Eint(void)函数中,根据输入值,在case语句中设置外部中断请求信号触发方式:低电平/高电平/下降沿/上升沿/2个沿;配置F、G口引脚功能;将3个外部中断服务程序入口地址分别给对应指针赋值;清除各登记寄存器的对应位;允许中断;最后是等待输入字符、屏蔽中断。在输入字符以前如有中断请求,则进入服务程序。 (见P297-300) 7.10 S3C44B0X中断控制器 (见P300-314) END * 7.5 S3C44B0X GPIO端口 1. GPIO端口 ⒉ 其他寄存器 7.6 S3C2440A/S3C2410A与中 断有关的寄存器、中断处理过程 7.6.1 与中断有关的寄存器 S3C2440A/S3C2410A中,与中断有关的寄存器可以分为4部分,见P280图7.3。 ⑴ EINT23-EINT0部分 图7.3中,这9个寄存器,除了EINTPEND外,其余8个寄存器,都可以由软件进行设置: GPFCON、GPGCON可以把对应引脚设置为中断请求功能引脚; EXTINT2/1/0设置中断请求信号触发方式(低电平、高电平、下降沿、上升沿、2个沿),滤波器允许与否; EINTFLT3、EINTFLT2设置对应引脚使用的滤波器时钟信号及滤波宽度。 EINTMASK中的20位,分别可以设置为允许中断/屏蔽中断,控制对EINTPEND中的EINT[23:4]的每1位是否屏蔽。 从S3C2440A/S3C2410A片外引脚来的EINT23-EINT0共24个中断请求信号,可以分为3组,具体内容如下: EINT3、EINT2、EINT1、EINT0中断请求,直接送往源登记寄存器SRCPND的对应位。 EINT7、EINT6、EINT5、EINT4中断请求,分别送往外部中断登记寄存器EINTPEND[7:4]的对应位,如果外部中断屏蔽寄存器EINTMASK[7:4]对应位允许,EINTPEND7/6/5/4经过逻辑或,作为1个请求送往源登记寄存器SRCPND的EINT4_7位,占用1位。 与EINT7–EINT4相同,EINT23–EINT8中断请求也是被分别送往EINTPEND[23:8]的对应位,如果EINTMASK[23:8]对应位允许,EINTPEND[23:8]经过逻辑或,作为1个请求送往源登记寄存器SRCPND的EINT8_23位,占用1位。 ⑵ 子源登记/子屏蔽寄存器部分 由于源登记寄存器SRCPND只有32位,每位对应1个中断源最多对应32个中断源。S3C2440A有60个中断源,S3C2410A有56个中断源,为此有两种处理方法: 外部中断EINT4-EINT7、EINT8-EINT23在SRCPND中只占2位,即EINT4_7位、EINT8_23位。 片内一部分中断源的中断请求不直接送往源登记寄存器SRCPND,而是先送往子源登记寄存器SUBSRCPND,然后将相关的几个子源作为1个源送往SRCPND,详见表7-51。 中断子屏蔽寄存器INTSUBMSK只对子源登记寄存器SUBSRCPND中的中断请求设置为允许/屏蔽。 ⑶ 中断部分 源登记寄存器SRCPND中的每1位对应1个中断源请求,或1组中断源中1个中断源的请求,1表示有请求;如果请求是从子源登记寄存器、外部中断登记寄存器来的,那么源登记寄存器中的这1位,代表的是某一组中断源中1个中断源有中断请求。 源登记寄存器中的某1位为1,如果中断屏蔽寄存器INTMSK中的对应位为0(允许),则经过优先权逻辑,送往中断登记寄存器INTPND的对应位,等待CPU服务。 优先权寄存器PRIOR
文档评论(0)