Chinaunix首页 | 论坛 | 博客
  • 博客访问: 116430
  • 博文数量: 43
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 16:56
文章分类

全部博文(43)

文章存档

2011年(1)

2010年(2)

2008年(40)

我的朋友

分类:

2008-09-05 18:54:04

  在ARMZ中提供两种中断,FIQ和IRQ,一般情况下都用IRQ中断。其中有七种异常中断模式。中断分为源中断,和子中断源,比如说外部中断可以都是源中断,只要设置好触发的条件,就可以直接跳进中断程序,但是串口不是,他的触发类型很多,接收,发送,错误,超时都可以触发中断,所以这类中断源出了一个源中断,下面还有子中断,
其中对于外部中断跟串口中断区别比较:
对于外部中断源,没有子中断源的时候,设置好是什么触发类型以后我们只需要以下语句就可以使能中断:
pISR_EINT0=(unsigned)Eint0Handler;//告诉中断处理中断函数的入口地址
EnableIrq(BIT_EINT0);//开中断
在退出该中断的时候:
ClearPending(BIT_EINT0);//清除中断标示,防止中断反复触发
就可以了
对于串口就不行了,除了需要使能源中断,也需要使能子中断源类型:
EnableIrq(BIT_UART0);//打开UART0中断
pISR_UART0 =(unsigned)UART0Handler;
EnableSubIrq( BIT_SUB_RXD0);//使能子中断源
在退出中断时候也需要:
ClearPending(BIT_UART0);//清除中断标示,防止中断反复触发
ClearSubPending(BIT_SUB_RXD0);//清除子中断标志
中断中常用得寄存器SRCPND(哪个中断源在等待中断请求被处理)其只SRCPND寄存器每一位都是由中断源自动设置,不管INTTMSK(中断屏蔽寄存器)寄存器中对应位是否为1,在指定中断源的程序中,寄存器对应的位必须先被清除,这样才能正确处理来自中断源的程序。
中断模式寄存器INTMOD,是对ARM内核将以FIQ,还是IRQ模式相应的中断.
外部中断判断寄存器EINTPND 外部中断判断寄存器是用来判断外部中断源INT[23:4]
 
 
 2410外部中断实验。
中断流程
ENT0中断流程
1将端口设置为中断模式
2端口上拉disable
3通过~CON设置端口为输出功能、
4通过EXINT设置中断触发方式
5建立中断向量到中断服务程序
6中断服务程序
7开中断INTMSK
8清除中断
 
 
 

 
阅读(959) | 评论(0) | 转发(0) |
0

上一篇:2410端口设置

下一篇:2410看门狗

给主人留下些什么吧!~~