0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是中斷向量偏移,為什么要做中斷向量偏移?

聚沃科技 ? 2024-01-30 09:47 ? 次閱讀

MCU中有兩段或以上程序的時候(第一個程序為用戶BootLoader程序,其他的為APP程序,這個在前期視頻《什么是ISP?什么是IAP》中有講過),APP程序中都需要做中斷向量偏移,那么什么是中斷向量偏移,為什么要做中斷向量偏移?

上一期常見問題《GD32 MCU是如何進入中斷函數(shù)的》和大家講過中斷向量表的概念,當一個中斷發(fā)生時,MCU會根據(jù)中斷號去中斷向量表中查找對應中斷函數(shù)的入口。那如果APP程序中有中斷發(fā)生,MCU還在0x08000000地址開始的地方去找中斷函數(shù)入口顯然是不行的,因為找到的中斷函數(shù)入口對應的是BootLoader中斷函數(shù),跳轉過去的話程序就運行異常了,這時候就需要做中斷向量偏移:即讓MCU從0x08000000偏移一段長度的地址開始去查找向量表。

比如一段APP程序保存在0x08008000(不會設置的小伙伴可以參考前期視頻《keil中GD32 MCU IAP中APP的存儲地址如何設置》),那么就需要MCU去這個地址開始的地方去查APP的向量表,也就是需要偏移0x8000。

wKgZomW4VQiAO5rJAABkEI19IDY875.png

那么如何實現(xiàn)中斷向量偏移呢?GD官方庫中提供了一個函數(shù):nvic_vector_table_set

wKgaomW4VQ2AIwzFAAAxItx540M404.png

參數(shù)1為中斷向量表基地址,一般選擇NVIC_VECTTAB_FLASH,也就是flash的基地址0x08000000;

參數(shù)2為偏移量,比如這里我們用0x8000。

所以只要在main函數(shù)的第一句調用下這個函數(shù)就可以實現(xiàn)中斷向量偏移啦:

wKgZomW4VRGAUc0aAAAnVY8dhxs490.png

是不是特別簡單呢?

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6037

    文章

    44558

    瀏覽量

    635355
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17148

    瀏覽量

    351213
  • 中斷向量
    +關注

    關注

    0

    文章

    14

    瀏覽量

    8945
  • GD32
    +關注

    關注

    7

    文章

    403

    瀏覽量

    24353
收藏 人收藏

    評論

    相關推薦

    什么是中斷向量偏移?為什么要做中斷向量偏移?#單片機 #嵌入式 #GD32 #MCU

    單片機mcu
    聚沃科技
    發(fā)布于 :2024年01月31日 09:52:18

    一個新手對stm32啟動和中斷向量表的理解

    設置flash(0x80000000)),在0x80000000的字區(qū)設置SP的值,后一個字區(qū)設置復位中斷的地址,程序自動讀取這兩個數(shù)值,跳到復位中斷后設置一些堆棧的初始化以及設置中斷向量表起始地址和
    發(fā)表于 10-30 12:06

    MM32 IAP中斷向量表重定義

    的字節(jié),存放應用程序的中斷向量表。 應用程序代碼及自身中斷矢量表存放在離0X08000000加某個地址偏移量的地方,即從0x08000000+偏移量的地址開始存放APP代碼及
    發(fā)表于 02-01 17:22

    ucosiii如何設置中斷向量偏移

    求助?。。ootLoader用裸機,APP如果不帶ucosiii操作系統(tǒng),設置好中斷向量偏移,app程序可以正常運行;BootLoader用裸機,APP如果是帶ucosiii操作系統(tǒng),設置好
    發(fā)表于 06-02 04:35

    怎么理解中斷向量

    1、中斷向量中斷地址和中斷向量表:中斷向量中斷服務程序的入口地址,在計算機中中斷向量的地址存
    發(fā)表于 08-27 10:24

    在IAP升級中APP程序的中斷向量表的偏移

    總結一下在IAP升級中APP程序的中斷向量表的偏移1.關于APP程序的中斷向量表地址偏移(三種方法,stm32F2與F4系列通用。三種方法本質一樣只是看到網(wǎng)上的各種例程的表現(xiàn)形式不一樣
    發(fā)表于 08-13 08:55

    STM32中斷向量偏移總結

    STM32中斷向量偏移總結一下在IAP升級中APP程序的中斷向量表的偏移講解中斷偏移之前先看一下
    發(fā)表于 08-13 08:59

    STM32如何將中斷向量偏移地址改到0x8005000?

    STM32如何將中斷向量偏移地址改到0x8005000?
    發(fā)表于 11-16 06:02

    有什么方法可以對STM32中斷向量偏移地址進行配置呢

    如何去重定位向量表的庫函數(shù)呢?有什么方法可以對STM32中斷向量偏移地址進行配置呢?
    發(fā)表于 11-16 08:08

    C51單片機的中斷號以及中斷向量

    本內容簡單介紹了C51單片機的中斷號以及中斷向量,方便大家了解和學習
    發(fā)表于 02-02 15:25 ?5833次閱讀
    C51單片機的<b class='flag-5'>中斷</b>號以及<b class='flag-5'>中斷向量</b>

    ARM中斷向量表與響應流程的系列資料詳細說明

    本文檔的主要內容詳細介紹的是ARM中斷向量表與響應流程的系列資料詳細說明包括了:一首先中斷向量表定義在哪里?如何加載?,二 中斷向量表與中斷服務程序,三處理流程
    發(fā)表于 07-05 17:41 ?2次下載
    ARM<b class='flag-5'>中斷向量</b>表與響應流程的系列資料詳細說明

    一文了解Cortex-M中斷向量表對齊原則

    來源 | 痞子衡嵌入式 一、Cortex-M中斷向量表對齊原則 ? 中斷向量表就是一個集中保存系統(tǒng)全部中斷處理函數(shù)(xxxIRQHandler)地址的常量數(shù)組(函數(shù)地址要占 4 個字節(jié),因此數(shù)組中
    的頭像 發(fā)表于 10-19 11:06 ?5048次閱讀
    一文了解Cortex-M<b class='flag-5'>中斷向量</b>表對齊原則

    PIC單片機學習——中斷向量之陷阱中斷(PIC24EP64GP204)

    一、簡介 PIC24EP64GP204的中斷向量表包含7個不可屏蔽陷阱向量和多達246個中斷源,每個中斷源都有自己的中斷向量,每個
    發(fā)表于 11-16 12:21 ?0次下載
    PIC單片機學習——<b class='flag-5'>中斷向量</b>之陷阱<b class='flag-5'>中斷</b>(PIC24EP64GP204)

    如何智能設置中斷向量表?| 簡單實用技能

    在有 boot 的情況下,一般需要重新設置 app 的中斷向量表,使得中斷向量表從 boot 切換到 APP 部分,大部分的工程師會使用類似下面這種方式設置中斷向量表的地址 0x0800 ...
    發(fā)表于 12-09 10:36 ?13次下載
    如何智能設置<b class='flag-5'>中斷向量</b>表?| 簡單實用技能

    淺析STM32F0系列中斷向量映射問題如何解決

    M3、M4等內核的單片機,直接修改中斷向量偏移地址(VECT_TAB_OFFSET)就行。但在M0內核的庫中,根本就沒有這個定義。
    發(fā)表于 02-02 09:55 ?1741次閱讀