打印
[ZLG-ARM]

***_Handler HANDLER ***_Exception中的HANDLER宏是什么意思?

[复制链接]
1936|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjb800zjb|  楼主 | 2007-3-2 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上查到别人说HANDLER是个宏,但没查到更多的有用的信息,说实话我对这个HANDLER是一点都不懂。。。师兄师姐们指点一下吧。谢谢。
据《ARM嵌入式系统基础教程》中所说这句话是中断的汇编接口代码。比如在UART0试验中,我们就需要在IRQ.S中添加
UART0_Handler HANDLER UART0_Exception
    唯一的疑问:HANDLER是做啥用的?是不是跟伪指令DCD有点像?

相关帖子

沙发
zhoujiawen| | 2007-3-2 18:30 | 只看该作者

在中断嵌套时用

UART0_ISR_Handler   HANDLER   UART0_ISR
UART1_ISR_Handler   HANDLER   UART1_ISR
RTC_ISR_Handler     HANDLER   RTC_ISR
TIMER1_ISR_Handler  HANDLER   TIMER1_ISR

VICVectCntl0 = (0x20 | 6);        //最高优先级slot0
VICVectAddr0 = (LPC_WORD32)UART0_ISR_Handler;//Interrupt source 6
.
.
.

使用特权

评论回复
板凳
zjb800zjb|  楼主 | 2007-3-2 20:11 | 只看该作者

LS回答我还是没太明白

    拿LS大哥的例子来讲
UART0_ISR_Handler   HANDLER   UART0_ISR
UART1_ISR_Handler   HANDLER   UART1_ISR
RTC_ISR_Handler     HANDLER   RTC_ISR
TIMER1_ISR_Handler  HANDLER   TIMER1_ISR

VICVectCntl0 = (0x20 | 6);        //最高优先级slot0
VICVectAddr0 = (LPC_WORD32)UART0_ISR_Handler;//Interrupt source 6

为什么要用VICVectAddr0 =  (LPC_WORD32)UART0_ISR_Handler?干嘛不可以在文件头部做个声明exten void UART0_ISR(void *cp),然后直接用VICVectAddr0 =(LPC_WORD32)UART0_ISR?(UART0_ISR应该是个位于串口中间件中的中断处理程序)

使用特权

评论回复
地板
zlgARM| | 2007-3-3 10:45 | 只看该作者

RE

这个问题想要透彻搞清楚的话,需要您自己查阅一下资料。

一、为什么要用HANDLER宏?
简单来说,用HANDLER宏,是为了让您自己的ISR函数***_Exception,被另一个函数***_Handler取代。
当中断发生的时候,系统执行的相应ISR不是***_Exception而是***_Handler了。



二、那么这个***_Handler和***_Exception有什么不同呢?
实际上,可以用示意性的代码来表示***_Exception和***_Handler这两个函数,让您能直观地了解大致的不同。


void ***_Exception (void)
{
  ISR服务代码
}

void ***_Handler(void)
{
   特别代码若干;
   ***_Exception ();
   特别代码若干;
}

所以,实现了函数的置换,就是HANDLER宏的作用。

三、不同点
我们可以发现在函数功能上,***_Handler()在功能上是包含了***_Exception ()的,但多出了一部分代码。这部分代码,是为了让OS管理好这个中断。
该代码具体完成的事情。建议您自己参考我们所提供的模板里的IRQ.inc文件。
该文件不仅能回答您***_Handler()多做的事情,还能告诉您,程序是怎么天衣无缝地把***_Exception ()置换成,***_Handler()的。






使用特权

评论回复
5
zjb800zjb|  楼主 | 2007-3-4 15:19 | 只看该作者

谢谢大家的回答,我总算是明白啦


另外在此佩服一下陈明计。。。那么多代码,他还写了不少注释,实在是辛苦啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

36

帖子

0

粉丝