1. 程式人生 > >C語言函式指標陣列在ARM中斷中的應用

C語言函式指標陣列在ARM中斷中的應用

一、函式指標的宣告與初始化

...

int max_fun(int a, int b);

/*函式指標的宣告,聲明瞭兩個形參都為int型別,返回值為int型別的函式指標*/
int (*fp)(int, int);

/*指標初始化*/
fp = max_fun;  //fp = &max_fun 也正確

/*函式指標初始化後的呼叫*/
fp(a,b);       //(*fp)(a,b);也正確

...

二、函式指標的typedef

typedef void (*irq_func)(int);

//定義一個數組,存放中斷函式指標,其引數型別為irq_func

irq_func irq_array[32];

三、函式指標陣列的使用

/* 註冊中斷函式,將中斷函式以指標形式存放在陣列中 */
void register_irq(int irq, irq_func fp)
 {
   irq_array[irq] = fp;
   INTMSK &= ~(1 << irq);   //關閉中斷遮蔽
 }
/* 此處將fp函式傳入陣列,由於函式名在表示式會蛻變為指標,
 * 所以呼叫register_irq()時第二個引數只需要傳入函式名
 */

register_irq(0, key_eint_irq);

陣列元素的使用:irq_array[bit](bit);  將irq_array[bit]替換為一個函式名更容易理解。