RM新时代网站-首页

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

當(dāng)MCU中有兩段或以上程序的時(shí)候(第一個(gè)程序?yàn)橛脩鬊ootLoader程序,其他的為APP程序,這個(gè)在前期視頻《什么是ISP?什么是IAP》中有講過),APP程序中都需要做中斷向量偏移,那么什么是中斷向量偏移,為什么要做中斷向量偏移?

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

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

wKgZomW4VQiAO5rJAABkEI19IDY875.png

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

wKgaomW4VQ2AIwzFAAAxItx540M404.png

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

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

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

wKgZomW4VRGAUc0aAAAnVY8dhxs490.png

是不是特別簡單呢?

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

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634631
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17123

    瀏覽量

    350980
  • 中斷向量
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    8941
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    24328
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    一個(gè)新手對stm32啟動(dòng)和中斷向量表的理解

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

    MM32 IAP中斷向量表重定義

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

    ucosiii如何設(shè)置中斷向量偏移

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

    怎么理解中斷向量?

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

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

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

    STM32中斷向量偏移總結(jié)

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

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

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

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

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

    C51單片機(jī)的中斷號以及中斷向量

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

    ARM中斷向量表與響應(yīng)流程的系列資料詳細(xì)說明

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

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

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

    PIC單片機(jī)學(xué)習(xí)——中斷向量之陷阱中斷(PIC24EP64GP204)

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

    如何智能設(shè)置中斷向量表?| 簡單實(shí)用技能

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

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

    M3、M4等內(nèi)核的單片機(jī),直接修改中斷向量偏移地址(VECT_TAB_OFFSET)就行。但在M0內(nèi)核的庫中,根本就沒有這個(gè)定義。
    發(fā)表于 02-02 09:55 ?1722次閱讀
    RM新时代网站-首页