[請益] 關於Keil C OVERLAY的使用

看板ASM作者 (懂得放手..才是王道)時間9年前 (2015/04/16 11:27), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
請教一個關於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

04/18 22:35, , 1F
一般不建議在中斷函式內呼叫副程式
04/18 22:35, 1F

04/18 22:37, , 2F
會有機率執行此副程式到一半,又被中斷執行一次
04/18 22:37, 2F

04/18 22:38, , 3F
因而造此不是你要的結果。
04/18 22:38, 3F

04/22 11:22, , 4F
明白,不過因為知道硬體設計沒有巢狀中斷,而且副程式只
04/22 11:22, 4F

04/22 11:22, , 5F
會在中斷函式中被呼叫,所以應該沒問題,只是會出現warnn
04/22 11:22, 5F

04/22 11:22, , 6F
ing很討厭,才希望透過overlay來避開warning.
04/22 11:22, 6F

04/26 02:00, , 7F
* !重複兩次的關係? 另外改成 ?PR?ABC_ISR?INTFUNC 試試看
04/26 02:00, 7F
文章代碼(AID): #1LBomsba (ASM)