请问STM8如何将中断向量表映射到RAM里

2019-07-19 20:59发布

最近在做STM8S207的IAP升级,STM8S的中断现在只能在IAP里使能或者在APP里使能,IAP使能了APP就不能用了,据说有方法把中断向量表映射到RAM里去,使得IAP和APP都能使用中断。查了一些资料,主要思路是:系统在发生中断的时候,会最先自动跳转到flash的某个特定地址,那么就让flash的这个地址,填入指令,让cpu跳转到特定的RAM地址,在每次进去程序时,使能总中断前,把ISR的地址填到这个RAM中,之后发生中断,程序就会跳到对应的ISR中。这里有个问题,在跳转到RAM地址上后,往这个RAM地址上写什么代码能让他跳到ISR地址上执行,还有这个ISR地址怎么来?试了下这样的代码:如下
中断来了以后到boot里的对应中断处理程序中,在这里跳转到指定RAM
#pragma vector=0xD
__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void)
{
     asm("LDW X,  SP ");
     asm("LD  A,  $FF");
     asm("LD  XL, A ");
     asm("LDW SP, X ");
     asm("JPF $0017DC");

}

APP中做这样处理:
extern void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void);
  /* 拷贝中断向量表中的ISR地址到0017DC */
   ram_int_vect_p->irq_TIM1_UPD_OVF_TRG_BRK = (isr_type_t) &TIM1_UPD_OVF_TRG_BRK_IRQHandler;



请教大神们,哪里有问题呀




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
kanwoe
1楼-- · 2019-07-19 22:29
 精彩回答 2  元偷偷看……
chenweigang
2楼-- · 2019-07-20 01:42
程序文件,大神看看呀

一周热门 更多>