STM32中斷向量表偏移位址配置方法

2021-08-19 20:10:44 字數 489 閱讀 2733

以將中斷向量表偏移位址改到0x8005000為例

第一種方式: 設定system_stm32f1xx.c檔案  #definevect_tab_offset  0x5000 

在void systeminit (void)函式中通過「scb->vtor =flash_base | vect_tab_offset」命令實現位址偏移

第二種方式:運用庫函式時,可以在main()函式開頭,加上

nvic_setvectortable(nvic_vecttab_flash,0x5000);__asm("cpsie  i"); 命令實現位址偏移

nvic_vecttab_flash 和 flash_base 都為 0x08000000

要實現這個功能,還需要在mdk的option->target 配置irom1為0x8005000,如圖

STM32中斷向量表的偏移量設定方法

講解中斷偏移之前先看一下程式的啟動流程 的內部快閃儲存器 flash 位址起始於 0x08000000 一般情況下,程式檔案就從此 位址開始寫入。此外 stm32f4 是基於 cortex m4 核心的微控制器,其內部通過一張 中斷向 量表 來響應中斷,程式啟動後,將首先從 中斷向量表 取出復位中斷...

STM32 中斷向量表的位置 重定向

lanmanck原創 這篇文章已經說了stm32的啟動過程 我們也知道怎麼跳到main函式了,那麼,中斷發生後,又是怎麼跑到中斷入口位址的呢?從stm32f10x.s可以看到,已經定義好了一大堆的中斷響應函式,這就是中斷向量表,標號 vectors,表示中斷向量表入口位址,例如 area reset...

STM32中斷向量表的位置,重定向

lanmanck原創 我們也知道怎麼跳到main函式了,那麼,中斷發生後,又是怎麼跑到中斷入口位址的呢?area reset,data,readonly 定義唯讀資料段,實際上是在code區 假設stm32從flash啟動,則此中斷向量表起始位址即為0x8000000 export vectors ...