音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(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ù)
void (*InterruptHandlers[MAXHNDLRS])(void);是什么意思?
/***************************************************************/
/* 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
中斷向量表的 函數(shù)指針數(shù)組
中斷向量表的 函數(shù)指針數(shù)組

3樓: >>參與討論
sushungwen
我的看法
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
lihai
 
5樓: >>參與討論
hnqjl
謝謝
 
參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
求教ARM
關(guān)于ARM常數(shù)的問(wèn)題
想學(xué)ARM,各位大俠給些建議!
大家快來(lái)幫忙啊!液晶問(wèn)題
向高手請(qǐng)教初學(xué)ADS1.2的小問(wèn)題?
免費(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)