中断编程入门

中断编程入门

ID:20427420

大小:65.50 KB

页数:6页

时间:2018-10-11

中断编程入门_第1页
中断编程入门_第2页
中断编程入门_第3页
中断编程入门_第4页
中断编程入门_第5页
资源描述:

《中断编程入门》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ARM中断编程入门寄存器介绍及编写过程最近一直在和ARM2200打交道,总结了下在ARMzlg模版中如和编写中断的方法(涉及了向量中断,非向量中断和外部中断的编写方法)本人初学,以下为本人观点,若有错误,请与我联系交流一.        前言中断的基本概念:1.    在ARM中最多有32个中断请求2.    16个向量IRQ中断(16个向量中断的VIC中断号已经有系统定义好了。在p208中可查看)(16个向量中断有16个优先级,可动态分配给中断请求)3.    可产生软件中断。4.    中断的优先级资源:中

2、断的优先级资源就是CPU的中断系统。以ARM7体系的CPU为例,最多可以有32个中断资源。对于每个具体的中断源可以将其设定为FIQ,使其具有最高优先级,但FIQ      最好是分配给唯一的中断源,否则就失去意义;也可以设定为向量IRQ,使其具有中等优先级,但向量IRQ的总数不能超过16个,这些中断源优先级的高低按向量编号从0(最高)到15(最低)排序;如果中断源的个数超过17个,则剩余的中断源只能设定为非向量IRQ,其优先级最低。操作系统本身必须使用一个定时器中断源来作为系统节拍中断,它是操作系统工作的基础。

3、二VIC向量中断控制器1.    向量中断控制器(VIC)具有32个中断请求输入a.    可以将其分为3类:FIQ,向量IRQ中断和非向量IRQ.b.    快速中断请求(FIQ)要求具有最高优先级。当如果只有一个中断被分配为FIQ时,可现实最短的FIQ等待时间,因为FIQ服务程序只要简单地启动对该中断处理就可以了。c.     向量IRQ中断具有中等优先级。该优先级可分配32个请求中的16个。32个请求中的任意一个都可以分配到16个向量IRQslot中的任意一个,其中slot()具有最高优先级,而slot1

4、5则为最低优先级。d.    非向量IRQ中断的优先级最低。2在编写中断程序时最常用的寄存器a.    中断使能寄存器(VICIntEnable)(1)VICIntEnable寄存器有32为:从0~31给每一位写1表示时该为对应的中断时能,写入0表示禁止该位的中断。(每一位对应的中断和VIC通道号对应。Eg:VICIntEnable=1<<6;表示使UART0能中断,因为UART0对应的中断号即为6.b.    中断选择寄存器VICIntSelect(1)VICIntSelect:该寄存器有32位(0~31)将

5、32个中断请求分别分配为FIQ或IRQ,(2)给对应位写入1表示给对应的中断请求分配为FIQ(3)给对应位写入0表示给对应的中断请求分配为IRQC.向量控制寄存器0~15(VICVectCntl0~15) (1)如果给一个中断指定的向量控制寄存器为VICVectl0则表示该中断具有最高中断优先级。反之,如果给一个中断指定的向量控制寄存器为VICVectl15则表示该中断具有最低优先级。(2)VICVectCntlx(x指0~15)该寄存器为6位。  0~4:用来指定中断编号  5:为1表示向量使能Eg;VICV

6、ectCntl0=0x20

7、6(表示给UART0分配向量控制寄存器,且它的优先级是最高的(0表示最高优先级)D.向量地址寄存器(VICVectAddrx)(1)当发生一个IRQ中断时,VIC会将对应的IRQ服务程序地址存入该寄存器,IRQ中断入口处的程序可读寄存器并跳转到读出的地址,执行相应的中断服务程序(注:该寄存器应该在ISR快结束时执行一次些操作(写入的值一般为0)以遍更新优先级硬件。)(2)在发生中断时,给中断分配中断地址时应该和给该中断分配的中断控制寄存器的号一致Eg:VICVectCntl0=0x2

8、0

9、6;      VICVectAddr0=(uint32)UART0_IRQ(自己编写的终端函数的地址)注:在编写向量中断程序时,必须对他进行初始化。一般的程序过程是:首先:用VICIntSelect寄存器对该中断进行选择时IRQ中断还是FIQ中断。      其次:用VICVectCntlx给该中断分配向量终端控制寄存器(其中x的值越小,中断优先级越高。  再次:用VICVectAddrx给该中断分配中断地址:  最后:用VICIntEnable使该中断使能:程序事例:VICIntSelect=0x000

10、00000;     //设置所有中断为IRQ中断VICVectCntl0=0x26;//UART0中断分配到IRQslot0,即优先级最高VICVectAddr0=(int)IRQ_UART0;          //设置UART0向量地址VICIntEnable=0x00000040;              //使能UART0中断三非向量中断:1.    常用寄存器:a中断使能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。