[请益] 关于Keil C OVERLAY的使用

楼主: MaxHaru (懂得放手..才是王道)   2015-04-16 11:27:47
请教一个关于Keil C OVERLAY的问题,
我在Keil C环境中OVERLAY的设定如下..
* ! (* !(
?PR?IntFunc0?INTFUNC,
?PR?IntFunc1?INTFUNC,
...
?PR?IntFunc26?INTFUNC)
目的在于希望同一个function可以同时给不同的ISR呼叫..
但有时仍会出现问题, 如下
void ABC_ISR(void)
{
..do something..
}
void Test(void)
{
ABC_ISR();
}
void IntFunc00(void) interrupt 0
{
return;
}
void IntFunc10(void) interrupt 10
{
ABC_ISR();
}
void IntFunc20(void) interrupt 20
{
Test();
}
在这样的case下, 还是有机会出现Warning L15,
但是它显示caller为IntFunc00, 与IntFunc20,
可是IntFunc00我并无call与ABC_ISR()有关的function,
请问是否有人遇过一样的case呢? 要怎么解决这样问题呢?
感谢..
作者: hengchieh (Hi)   2015-04-18 22:35:00
一般不建议在中断函式内呼叫副程式会有机率执行此副程式到一半,又被中断执行一次因而造此不是你要的结果。
楼主: MaxHaru (懂得放手..才是王道)   2015-04-22 11:22:00
明白,不过因为知道硬件设计没有巢状中断,而且副程式只会在中断函式中被呼叫,所以应该没问题,只是会出现warnning很讨厌,才希望透过overlay来避开warning.
作者: disap ( )   2015-04-26 02:00:00
* !重复两次的关系? 另外改成 ?PR?ABC_ISR?INTFUNC 试试看

Links booklink

Contact Us: admin [ a t ] ucptt.com