|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
void (*InterruptHandlers[MAXHNDLRS])(void);是什么意思? |
| 作者:hnqjl 欄目:ARM技術(shù) |
/***************************************************************/ /* DUMMY Function Prototype for Interrupt Service Vector Table */ /***************************************************************/ static void DUMMYIsr(void) {} void (*InterruptHandlers[MAXHNDLRS])(void); /***********************************************************************/ /* InitIntHandlerTable: Initialize the interrupt handler table */ /* NOTE(S): This should be called during SYSTEM initialization */ /***********************************************************************/ void InitIntHandlerTable(void) { REG32 i; for (i = 0; i < MAXHNDLRS; i++) InterruptHandlers = DUMMYIsr; } /*********************************************************/ /* SysSetInterrupt: Setup Interrupt Handler Vector Table */ /*********************************************************/ void SysSetInterrupt(REG32 vector, void (*handler)()) { InterruptHandlers[vector] = handler; } 我的理解是它提供一虛函數(shù),函數(shù)的內(nèi)容需要自己去實(shí)現(xiàn),對(duì)嗎,謝謝! 還有static void DUMMYIsr(void) {}是什么也不干,為空函數(shù)嗎???? |
| 2樓: | >>參與討論 |
| 作者: fangcheng 于 2005/4/6 9:40:00 發(fā)布:
中斷向量表的 函數(shù)指針數(shù)組 中斷向量表的 函數(shù)指針數(shù)組 |
|
| 3樓: | >>參與討論 |
| 作者: sushungwen 于 2005/4/6 10:02:00 發(fā)布:
我的看法 void (*InterruptHandlers[MAXHNDLRS])(void); 是一個(gè)函數(shù)指針數(shù)組。等效為最大中斷句柄個(gè)數(shù)的中斷函數(shù)入口地址。函數(shù)的輸入和輸出都是void型的。 ======================= void InitIntHandlerTable(void) { REG32 i; for (i = 0; i < MAXHNDLRS; i++) InterruptHandlers = DUMMYIsr; } 這段是中斷向量表的默認(rèn)填充和初始化。循環(huán)中間好像少了一點(diǎn)[], InterruptHandlers[i] = DUMMYIsr。 ======================== static void DUMMYIsr(void) {}是個(gè)全局靜態(tài)的函數(shù)入口地址。 當(dāng)產(chǎn)生你的中斷向量里沒(méi)定義到的中斷時(shí),函數(shù)跳到啞函數(shù)這里,空操作一下后就返回,不會(huì)發(fā)生異常錯(cuò)誤和程序跑飛。 虛函數(shù)的概念是C++中的,和這個(gè)里邊DUMMY()不同。但可理解成根據(jù)自己的需求來(lái)擴(kuò)充的函數(shù),他指提供框架。 ================ void SysSetInterrupt(REG32 vector, void (*handler)()) { InterruptHandlers[vector] = handler; } 這段是真正的充填你自己的中斷程序。 如先寫(xiě)你自己的函數(shù) void myInterruptFun(){在這里是你自己的中斷程序} 再 SysSetInterrupt(myVector, myInterruptFun) 這樣就把自己的中斷向量真正和實(shí)際工作的函數(shù)關(guān)聯(lián)了。 在調(diào)用的時(shí)候這樣可以 InterruptHandlers(myVector)(); |
|
| 4樓: | >>參與討論 |
| 作者: lyy1981 于 2005/4/6 21:31:00 發(fā)布:
lihai |
|
| 5樓: | >>參與討論 |
| 作者: hnqjl 于 2005/4/8 17:16:00 發(fā)布:
謝謝 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |