现在的位置: 首页 > 综合 > 正文

ARM2200下的中断编程二

2013年08月02日 ⁄ 综合 ⁄ 共 1933字 ⁄ 字号 评论关闭

ARM中断程序之外部中断

 

----------------------------------------------------------------------

Author             :tiger-john
WebSite           :blog.csdn.net/tigerjb

Email               :jibo.tiger@gmail.com

开发板            :LPC220

环境                :ADS1.2

Tiger声明:本人鄙视直接复制本人文章而不加出处的个人或团体,但不排斥别人转载tiger-john的文章,只是请您注明出处并和本人联系或留言给我。3Q

-----------------------------------------------------------------------

目录:

ARM2200下的中断编程一

ARM2200下的中断编程二

ARM2200 下的中断编程三

 

四.ARM中断程序编写之外部中断

前言:VIC中断控制器定义了4个外部中断,中断号为EINT0(14),

EINT1(15),EINT2(16),EINT3(17)用来给用户进行编写外部中断(例如按键中断。。。)

1.     在编写外部中断事先要对引脚功能选择寄存器(PINSEL0)进行配置

(参照具体型号的ARM数据手册,此处以LPC2230进行配置)在LPC2230中:

Eg:PINSEL1 = 3<<8;      // 设置管脚连接,P0.20设置为EINT3

2第二部外部中断还要对外部中断方式寄存器(EXTMODE)进行配置来选择每个EINT脚是电平触发还是边沿触发

A.EXTMODE(外部中断方式寄存器):总共有8

0位:对第0位写入1表示对EINT0使用边沿触发,反之,写入0表示对EINT0使用电平触发。

1位:功能和上面相似只是对EINT1进行配置

2位:是对EINT2进行配置

3位:是对EINT3进行配置

4~7位:保留

EgEXTMODE = 1<<3; // 设置EINT3中断为边沿触发模式

EXTMODE = 0<<3;          // 设置EINT3中断为电平触发模式

3第三部外部中断还要对外部中断极性寄存器进行配置(EXTPOLAR)进行配置(在电平触发方式中,EXTPOLAR寄存器用来选择相应引脚是高电平或低电平有效。在边沿触发方式中,EXTPOLAR寄存器用来选择引脚上升沿或下降沿有效)

A EXTPOLAT(外部中断极性寄存器)总共有8

0位:是对EINT0进行配置,对该位写入1表示时表示

EINT0高电平或上升沿有效。反之,对该位写入0表示表示EINT0低电平或下降沿有效

1位:是对EINT1进行配置。功能和上面类似。

2位:是对EINT2进行配置。功能和上面类似

3位:是对EINT3进行配置。功能和上面类似

4~7位:保留位。

Eg:  EXTPOLAR = 0x00;     // 设置EINT3中断为下降沿触发

         EXTPOLAR = 0x00;// 设置EINT3中断为低电平有效

4.第四部配置中断选择寄存器VICIntSelect

功能和前面的类似

Eg; VICIntSelect = 0x00000000; // 设置所有中断分配为IRQ中断

5若外部中断为向量中断则对向量控制寄存器0~15(VICVectCntl0~15)

进行配置。若为非向量中断则此步骤可省掉。

Eg: VICVectCntl0 = 0x20|17; // 分配EINT3中断到向量中断0,0x20表示向量IRQ使能,1<<17表示EINT3VIC通道17

6配置外部中断服务程序的地址:

a.若为向量中断则配置向量地址寄存器(VICVectAddrx

a.     b.若为非向量中断则配置默认向量地址寄存器VICDefVectAddr

eg:  VICVectAddr0 = (int)IRQ_Eint3;      // 设置向量中断服务程序地址IRQ_Eint3(为函数名,可随意起)

VICDefVectAddr = (int)IRQ_Eint3;             // 设置非向量中断服务程序地址

7.清除外部中断标志

切记要在初始化时对EXTINT进行初始化。否则程序会进入异常。

配置外部中断标志寄存器(EXTINT)

A.    通过对EXINT寄存器写人1来将其清零来清除外部中断标志

B.     EXTINT总共有8

0位:是对EINT0进行配置,写入1对外部中断EINT0中断进行清除

1位:是对EINT1进行配置,写入1对外部中断EINT1中断进行清除。

2位:是对EINT2进行配置,写入1对外部中断EINT2中断进行清除。

抱歉!评论已关闭.