作者MaxHaru (懂得放手..才是王道)
看板ASM
標題[請益] 關於Keil C OVERLAY的使用
時間Thu Apr 16 11:27:47 2015
請教一個關於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呢? 要怎麼解決這樣問題呢?
感謝..
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.210.106.78
※ 文章網址: https://webptt.com/m.aspx?n=bbs/ASM/M.1429154870.A.964.html
1F:推 hengchieh: 一般不建議在中斷函式內呼叫副程式 04/18 22:35
2F:→ hengchieh: 會有機率執行此副程式到一半,又被中斷執行一次 04/18 22:37
3F:→ hengchieh: 因而造此不是你要的結果。 04/18 22:38
4F:→ MaxHaru: 明白,不過因為知道硬體設計沒有巢狀中斷,而且副程式只 04/22 11:22
5F:→ MaxHaru: 會在中斷函式中被呼叫,所以應該沒問題,只是會出現warnn 04/22 11:22
6F:→ MaxHaru: ing很討厭,才希望透過overlay來避開warning. 04/22 11:22
7F:推 disap: * !重複兩次的關係? 另外改成 ?PR?ABC_ISR?INTFUNC 試試看 04/26 02:00