看板 ASM 關於我們 聯絡資訊
請教一個關於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://www.ptt.cc/bbs/ASM/M.1429154870.A.964.html
hengchieh: 一般不建議在中斷函式內呼叫副程式 04/18 22:35
hengchieh: 會有機率執行此副程式到一半,又被中斷執行一次 04/18 22:37
hengchieh: 因而造此不是你要的結果。 04/18 22:38
MaxHaru: 明白,不過因為知道硬體設計沒有巢狀中斷,而且副程式只 04/22 11:22
MaxHaru: 會在中斷函式中被呼叫,所以應該沒問題,只是會出現warnn 04/22 11:22
MaxHaru: ing很討厭,才希望透過overlay來避開warning. 04/22 11:22
disap: * !重複兩次的關係? 另外改成 ?PR?ABC_ISR?INTFUNC 試試看 04/26 02:00