参考网上的,在IAP工程中加入以下代码
//中断向量表重建
__root const long reintvec[]@".intvec"=
{ 0x82008080,0x82009004,0x82009008,0x8200900c, //当应用程序地址不是0x9000时则要相应改掉除第一个0x82008080以外的数值
0x82009010,0x82009014,0x82009018,0x8200901c,
0x82009020,0x82009024,0x82009028,0x8200902c,
0x82009030,0x82009034,0x82009038,0x8200903c,
0x82009040,0x82009044,0x82009048,0x8200904c,
0x82009050,0x82009054,0x82009058,0x8200905c,
0x82009060,0x82009064,0x82009068,0x8200906c,
0x82009070,0x82009074,0x82009078,0x8200907c,
};
会出现以下错误:
[td]Error[Lp004]: actual size (0x100) exceeds maximum size (0x80) for block "INTVEC"
而且这种方法只能实现APP中断,而IAP却不能有中断
还有一种方法是将中断向量表映射到RAM中,可以实现APP和IAP都能中断,那么该怎么实现,希望各位大神不吝赐教。
[/td]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
http://www.openedv.com/forum.php ... &extra=page%3D1
该贴中的映射函数:
//重新初始化STM8的中断向量表 把它重新定义到APP的中断向量中
void STM8_HanderIqr_Init(void)
和跳转函数:
goto_app(); //运行APP
要实现IAP和APP都能实现中断,映射函数不应该在一开始就执行,
而是在执行跳转函数goto_app()之前执行,
例如:
STM8_HanderIqr_Init();
goto_app();
从APP跳转会IAP程序是也同理,映射地址换一下就OK了
关boot的中断了,不行的,APP程序一开中断就死了
一周热门 更多>