新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32 中斷向量表 NVIC_SetVectorTable() 應(yīng)用

stm32 中斷向量表 NVIC_SetVectorTable() 應(yīng)用

作者: 時(shí)間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
STM32中斷向量表的設(shè)置主要是用在IAP 程序中,
如果是普通的 flash 中只有一個(gè)程序,一般不需要設(shè)置這個(gè)。
顧名思義,這個(gè)表存放的是中斷服務(wù)函數(shù)的入口地址,當(dāng)發(fā)生中斷時(shí),
CPU來這個(gè)表中查詢,以此獲取中斷函數(shù)的入口地址。
在stm32 的啟動(dòng)文件中,設(shè)置完成堆棧,就來設(shè)置 中斷向量表,
AREA RESET, DATA, READONLY ;
定義只讀數(shù)據(jù)段,實(shí)際上是在CODE區(qū)(假設(shè)STM32從FLASH啟動(dòng),則此中斷向量表起始地址即為0x8000000)
如果改變了程序的起始地址,這種就是IAP的情況了,像這個(gè)樣子
那么這個(gè)時(shí)候就需要重新設(shè)置中斷向量表
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00010000);//重新配置中斷向量表
配合地址的改變,這樣程序運(yùn)行的時(shí)候才能找到中斷服務(wù)函數(shù)的入口地址,正常執(zhí)行。
附件:
對(duì)中斷向量表更深入的解釋
顯然,200039c0就是棧頂?shù)刂?,?8006F21就是reset_handler地址!
stm32 小端模式,高字節(jié)在高位,低字節(jié)在低位,所以這個(gè)要反過來看。



關(guān)鍵詞: STM32中斷向量

評(píng)論


技術(shù)專區(qū)

關(guān)閉