[請益] 關於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