【发布时间】:2014-02-19 09:41:22
【问题描述】:
我正在使用 IAR RH850 编译器,并且正在实现中断例程。看来我已经写了所有的书,但是中断跳转到默认的中断处理程序(循环)而不是我的处理程序。我的做法与其他 IAR 项目一样,我使用带有矢量偏移量和 __interrupt 关键字的 #pragma vector 指令编写了中断例程。
#pragma vector=0x100
__interrupt void ISR_CustomHandler(void)
{
__DI();
InterruptRoutine();
__EI();
}
在我的头文件中:
#include <intrinsics.h>
#pragma language=extended
#include <iorh850.h>
__interrupt void ISR_CustomHandler();
在链接器输出文件中它看起来像是被注册的(地址是正确的):
___interrupt_0x10 0x0000941c 0x2 Code Wk default_handler.o [4]
___interrupt_0x100 0x000087d0 Code Gb RH850.o [1]
___interrupt_0x101 0x0000941c 0x2 Code Wk default_handler.o [4]
还有什么需要注意的吗?
在中断时 CPU 跳转到 0x100,这是正确的。但是从这个位置跳转是不正确的——看起来链接器忽略了我的自定义处理程序。任何想法为什么?
【问题讨论】: