0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是中断向量偏移,为什么要做中断向量偏移?

聚沃科技 2024-01-30 09:47 次阅读

MCU中有两段或以上程序的时候(第一个程序为用户BootLoader程序,其他的为APP程序,这个在前期视频《什么是ISP?什么是IAP》中有讲过),APP程序中都需要做中断向量偏移,那么什么是中断向量偏移,为什么要做中断向量偏移?

上一期常见问题《GD32 MCU是如何进入中断函数的》和大家讲过中断向量表的概念,当一个中断发生时,MCU会根据中断号去中断向量表中查找对应中断函数的入口。那如果APP程序中有中断发生,MCU还在0x08000000地址开始的地方去找中断函数入口显然是不行的,因为找到的中断函数入口对应的是BootLoader中断函数,跳转过去的话程序就运行异常了,这时候就需要做中断向量偏移:即让MCU从0x08000000偏移一段长度的地址开始去查找向量表。

比如一段APP程序保存在0x08008000(不会设置的小伙伴可以参考前期视频《keil中GD32 MCU IAP中APP的存储地址如何设置》),那么就需要MCU去这个地址开始的地方去查APP的向量表,也就是需要偏移0x8000。

wKgZomW4VQiAO5rJAABkEI19IDY875.png

那么如何实现中断向量偏移呢?GD官方库中提供了一个函数:nvic_vector_table_set

wKgaomW4VQ2AIwzFAAAxItx540M404.png

参数1为中断向量表基地址,一般选择NVIC_VECTTAB_FLASH,也就是flash的基地址0x08000000;

参数2为偏移量,比如这里我们用0x8000。

所以只要在main函数的第一句调用下这个函数就可以实现中断向量偏移啦:

wKgZomW4VRGAUc0aAAAnVY8dhxs490.png

是不是特别简单呢?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43978

    浏览量

    620871
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16019

    浏览量

    343657
  • 中断向量
    +关注

    关注

    0

    文章

    14

    浏览量

    8862
  • GD32
    +关注

    关注

    7

    文章

    333

    浏览量

    23742
收藏 人收藏

    评论

    相关推荐

    MM32 IAP中断向量表重定义

    的字节,存放应用程序的中断向量表。 应用程序代码及自身中断矢量表存放在离0X08000000加某个地址偏移量的地方,即从0x08000000+偏移量的地址开始存放APP代码及
    发表于 02-01 17:22

    ucosiii如何设置中断向量偏移

    求助!!!BootLoader用裸机,APP如果不带ucosiii操作系统,设置好中断向量偏移,app程序可以正常运行;BootLoader用裸机,APP如果是带ucosiii操作系统,设置好
    发表于 06-02 04:35

    怎么理解中断向量

    1、中断向量中断地址和中断向量表:中断向量中断服务程序的入口地址,在计算机中中断向量的地址存
    发表于 08-27 10:24

    在IAP升级中APP程序的中断向量表的偏移

    总结一下在IAP升级中APP程序的中断向量表的偏移1.关于APP程序的中断向量表地址偏移(三种方法,stm32F2与F4系列通用。三种方法本质一样只是看到网上的各种例程的表现形式不一样
    发表于 08-13 08:55

    STM32中断向量偏移总结

    STM32中断向量偏移总结一下在IAP升级中APP程序的中断向量表的偏移讲解中断偏移之前先看一下
    发表于 08-13 08:59

    STM32如何将中断向量偏移地址改到0x8005000?

    STM32如何将中断向量偏移地址改到0x8005000?
    发表于 11-16 06:02

    有什么方法可以对STM32中断向量偏移地址进行配置呢

    如何去重定位向量表的库函数呢?有什么方法可以对STM32中断向量偏移地址进行配置呢?
    发表于 11-16 08:08

    ARM中断向量两种设置方法

    在32位ARM系统中,一般都是在中断向量表中放置一条分支指令或PC寄存器加载指令,实现程序跳转到中断服务例程的功能。
    发表于 01-12 19:06 4512次阅读

    C51单片机的中断号以及中断向量

    本内容简单介绍了C51单片机的中断号以及中断向量,方便大家了解和学习
    发表于 02-02 15:25 5465次阅读
    C51单片机的<b class='flag-5'>中断</b>号以及<b class='flag-5'>中断向量</b>

    一文了解Cortex-M中断向量表对齐原则

    来源 | 痞子衡嵌入式 一、Cortex-M中断向量表对齐原则   中断向量表就是一个集中保存系统全部中断处理函数(xxxIRQHandler)地址的常量数组(函数地址要占 4 个字节,因此数组
    的头像 发表于 10-19 11:06 4135次阅读
    一文了解Cortex-M<b class='flag-5'>中断向量</b>表对齐原则

    PIC单片机学习——中断向量之陷阱中断(PIC24EP64GP204)

    一、简介 PIC24EP64GP204的中断向量表包含7个不可屏蔽陷阱向量和多达246个中断源,每个中断源都有自己的中断向量,每个
    发表于 11-16 12:21 0次下载
    PIC单片机学习——<b class='flag-5'>中断向量</b>之陷阱<b class='flag-5'>中断</b>(PIC24EP64GP204)

    一文了解Cortex-M中断向量表对齐原则

    关注+星标公众号,不错过精彩内容来源| 痞子衡嵌入式一、Cortex-M中断向量表对齐原则中断向量表就是一个集中保存系统全部中断处理函数(xxxIRQHandler)地址的常量数组(函数...
    发表于 12-01 12:21 9次下载
    一文了解Cortex-M<b class='flag-5'>中断向量</b>表对齐原则

    如何智能设置中断向量表?| 简单实用技能

    在有 boot 的情况下,一般需要重新设置 app 的中断向量表,使得中断向量表从 boot 切换到 APP 部分,大部分的工程师会使用类似下面这种方式设置中断向量表的地址 0x0800 ...
    发表于 12-09 10:36 12次下载
    如何智能设置<b class='flag-5'>中断向量</b>表?| 简单实用技能

    浅析STM32F0系列中断向量映射问题如何解决

    M3、M4等内核的单片机,直接修改中断向量偏移地址(VECT_TAB_OFFSET)就行。但在M0内核的库中,根本就没有这个定义。
    发表于 02-02 09:55 1249次阅读