[問題] Function Pointer to ISR
請教一個百思不解的問題,
我在Keil C中, 要在某個ISR中使用Function Point來指到
一些只會在這個ISR會Call到的function, 如下:
void XXX_ISR(void)
{
unsigned char i;
i = GetFunction(); //i=0~1
if(i==0)
{
Func0_ISR();
}
else if(i==1)
{
Func0_ISR();
}
}
void Func0(void)
{
AAA_ISR();
}
之後宣告了一個Function Table如下:
typedef void (*FUNCTION_PTR_V_V) (void);
const FUNCTION_PTR_V_V code ISR_Table[2]=
{
Func0_ISR,
Func1_ISR
};
在ISR_Table[]定義好之後, Compile就會出現以下的Warning
*** WARNING L13: RECURSIVE CALL TO SEGMENT
SEGMENT: ?PR?XXXX
CALLER: ?PR?_AAA_ISR?XXXX
*** WARNING L15: MULTIPLE CALL TO SEGMENT
SEGMENT: ?PR?_ESPIVW_GPIO_INIT_ESPI_ISR?ESPIVW
CALLER1: ?C_C51STARTUP
CALLER2: ?PR?INTERRUPT_XXXX?INTFUNC
感覺是跟AAA_ISR()這個function有關,
不過這個Function是一個獨立的function,
沒有再Call到其它的地方了
我不明白為什麼會出現這樣的Warning
有誰知道Keil C出現這樣Warning的原因嗎?
是不是不能在ISR中使用Function Point的方法來呼叫Function?
謝謝.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.234.68
※ 文章網址: http://www.ptt.cc/bbs/ASM/M.1414857647.A.CE1.html
※ 編輯: MaxHaru (1.163.234.68), 11/02/2014 00:04:53
推
11/08 18:09, , 1F
11/08 18:09, 1F
→
11/15 16:23, , 2F
11/15 16:23, 2F
推
11/19 22:01, , 3F
11/19 22:01, 3F
→
11/19 22:01, , 4F
11/19 22:01, 4F
→
11/19 22:04, , 5F
11/19 22:04, 5F
→
11/28 20:35, , 6F
11/28 20:35, 6F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章