脚后跟疼是什么原因引起的| 十月一日是什么日子| 儿童支气管炎吃什么药| 肚子疼吃什么药管用| 高光是什么意思| 皮试阳性是什么意思| 经常咳嗽是什么原因| 华佗发明了什么| 中医减肥挂什么科| 打喷嚏是什么原因| o型血阳性是什么意思| p代表什么| 可见一斑是什么意思| 颈椎压迫神经手麻吃什么药| 金童玉女指什么生肖| dr是什么检查项目| 为什么右眼一直跳| 什么的骏马| 4像什么| 最大的淡水湖是什么湖| fbi相当于中国的什么| 为什么运动完会恶心头晕想吐| 砂仁为什么要后下| 拉肚子拉稀是什么原因| 四时感冒什么意思| 治前列腺炎吃什么药效果最好| 秀五行属什么| 天气热吃什么解暑| 穿山甲说了什么| bff是什么意思| 日语一个一个是什么意思| 炖羊肉放什么调料| 什么叫邪淫| 洞房是什么意思| 什么的猫| 心脏在什么位置图片| 84消毒液不能和什么一起用| 手机电池为什么会鼓包| 儿童经常流鼻血什么原因造成的| 冬天有什么水果| rsl是什么意思| 火碱是什么东西| 知心朋友是什么意思| 属马的人佩戴什么招财| 怀孕不能吃什么| 支气管炎是什么症状| 血清谷丙转氨酶偏高是什么意思| 乳房上长黑色的斑点是什么原因| 霉菌阳性是什么意思| 塔塔粉是什么粉| 董事总经理是什么职位| 男人前列腺炎有什么症状表现| 守护神是什么意思| 结膜炎挂什么科| videos是什么意思| 鼓的偏旁部首是什么| 嬴荡和嬴政什么关系| 世界杯什么时候开始| 梦见动物是什么意思| 鲜黄花菜含有什么毒素| 此刻朋友这杯酒最珍贵是什么歌| 汽球是什么生肖| 10月24是什么星座| 肺胀是什么病| 磅礴是什么意思| 经常想吐恶心是什么原因| 甲状腺囊肿不能吃什么| 谥号是什么意思| 反流性食管炎是什么病| 慢性扁桃体炎吃什么药| 捣碎东西的器皿叫什么| 栩字五行属什么| 反应迟钝是什么原因造成的| 皮的偏旁是什么| cbd什么意思| 瞅瞅是什么意思| 劫财代表什么| 听什么音乐容易入睡| 复苏是什么意思| 瑶五行属性是什么| 一直想吐是什么原因| 春风得意是什么生肖| 皮下囊肿是什么原因引起的| 什么时间进伏| 什么是过敏| 血糖30多有什么危险| 头上两个旋代表什么| 槟榔为什么那么贵| 眼压高是什么症状| 口腔溃疡是缺少什么维生素| 胃不消化吃什么药好| 男生喜欢什么| 6月22号是什么星座| 福荫是什么意思| 凤仙花长什么样| 送老师什么花好| 精子是什么| 农历七月二十什么日子| 兆以上的计数单位是什么| 人参片泡水喝有什么功效和作用| 荤菜是什么意思| 美国的国歌是什么| 玉米除草剂什么时候打最好| 青红皂白的皂是什么颜色| 增强免疫力的针叫什么| 孕妇甲减是什么原因引起的| 牛欢喜是什么部位| 病毒感染咳嗽吃什么药效果好| 黄体不足吃什么| 指甲盖上有竖纹是什么原因| 心绞痛吃什么药好| 下午3点半是什么时辰| 胎心不稳定是什么原因| cas是什么意思| 什么笑什么笑| 尿黄尿味大难闻是什么原因| 12月11日是什么星座| 盯眝是什么意思| 背疼应该挂什么科| 警犬都是什么品种| 28年属什么生肖| 放电是什么意思| 16岁是什么年华| d代表什么| 五险一金有什么用| 嗜酸性粒细胞高是什么原因| 什么时间艾灸最好| 什么是甲状腺结节| 身怀六甲什么意思| 属羊的是什么星座| 下午8点是什么时辰| 左室高电压是什么意思| 单鞋是什么鞋| 屁股疼吃什么药| 住院预交金是什么意思| paco2是什么意思| 第一胎打掉会有什么影响| 下巴两边长痘痘是什么原因| 痛风吃什么| 医院院长是什么级别| 喝酒不能吃什么水果| 向内求什么意思| 什么牌子的冰箱好| 八面玲珑是指什么生肖| 泰迪狗长什么样子| 菊花不能和什么一起吃| 税号是什么| 炸腮有什么症状| 手上的月牙代表什么意思| 长期吃泡面有什么危害| 一直打嗝不止是什么原因| 什么网站可以看毛片| 六度万行 是什么意思| 孕吐吃什么药| champion什么牌子| 糖粉和白糖有什么区别| 说是什么意思| emo是什么意思| 国行是什么意思| 排卵是什么意思啊| 心脏怕什么| 糖尿病是什么原因引起的| 意会是什么意思| 高压氧治疗有什么作用| 人为什么会脱发| 什么是肥皂剧| 牙齿根部发黑是什么原因| 格林巴利综合症是什么| 少帅是什么军衔| 言字五行属什么| dia是什么意思| 紫微斗数是什么| 桃花灼灼什么意思| 安然无恙的恙是什么意思| 处大象是什么意思| pfs是什么意思| 文工团是什么意思| 吐痰带血是什么原因| 喝小分子肽有什么好处| 豆绿色配什么颜色好看| 沣字五行属什么| 什么护肤品比较好| 90岁属什么生肖| 栽赃是什么意思| 愿闻其详什么意思| 7月17日什么星座| 深度睡眠是什么状态| 什么是集体户| 什么牌子的指甲油好| 巴西龟吃什么食物| 马骝是什么意思| 陆家嘴为什么叫陆家嘴| N医学上是什么意思| 双侧卵巢多囊样改变是什么意思| 带鱼屏是什么意思| 什么是避孕套| 副研究员什么级别| mg什么意思| 心肝火旺吃什么中成药| 什么是匝道图片| 减肥吃什么肉类| 12月7日是什么星座| 食用酒精是什么做的| 茯苓什么味道| 淋球菌培养是检查什么| 无私是什么意思| 肝胆湿热吃什么中成药最好| 有机可乘是什么意思| 尿里有潜血是什么原因| 兰花长什么样| m是什么牌子| 武当山求什么最灵| chb是什么意思| 眼睛不能见光是什么病| 胀气是什么原因引起的| 6月18是什么星座| 女人养颜抗衰老吃什么最好| 三教九流代表什么生肖| 尿蛋白阳性什么意思| 甲功异常有什么症状| 市公安局政委是什么级别| 望梅止渴是什么故事| 蛊是什么意思| 什么食物含有维生素b| 做梦丢钱了什么征兆| 疤痕增生挂什么科| 智齿发炎吃什么药| 芒果有什么功效| 温州人为什么会做生意| 同房子宫疼痛什么原因| 负数是什么意思| 回忆杀是什么意思| 血热吃什么中成药| 什么是牙冠| 安全三原则是指什么| 什么是潜规则| 三点水山今读什么| 查血压高挂什么科室| 腰肌劳损用什么药| 炮灰是什么意思| erdos是什么牌子| 肌酐偏低是什么意思| 搬家当天有什么讲究| 啤酒喝了有什么好处| se是什么元素| 血糖高去医院挂什么科| 邓超属什么生肖| 哔哩哔哩是干什么的| 牛磺酸是什么| 白细胞低是什么原因引起的| 合掌是什么意思| 夫妻少配无刑是什么意思| 赫兹是什么| 心脏早搏是什么症状| 蛇的尾巴有什么作用| 女内分泌检查什么项目| 笑口常开是什么生肖| 白发越来越多是什么原因造成的| b细胞淋巴肿瘤是一种什么病| 什么汤是清热去火的| 肾不好吃什么药| 猴和什么相冲| 喀秋莎什么意思| 疡是什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? MCU ? MCU如何从向量表到中断服务

共2条 1/1 1 跳转至

MCU如何从向量表到中断服务

菜鸟
2025-08-03 14:09:21     打赏
百度 2017年底,湖南印发第2号总河长令,要求全面清理整顿河道水域长期停泊不用、无人管理的船舶,确保河道水域防洪、航运、生态安全。

中断处理的核心是中断向量表(IVT),它是一个存储中断服务例程(ISR)地址的内存结构。当中断发生时,MCU通过IVT找到对应的ISR地址并跳转执行。

本文将深入探讨MCU(以ARM Cortex-M架构为例)如何从向量表过渡到中断服务。

1、中断向量表

中断向量表(IVT)是一个存储中断和异常处理程序地址的表格,位于MCU的内存中。在ARM Cortex-M处理器中,IVT通常从地址0x00000000开始,包含初始堆栈指针和各种异常处理程序的地址。

每个表项占用4字节,存储一个32位地址,指向对应的ISR或异常处理函数。

IVT的作用是提供一种快速查找机制,使MCU在中断发生时能够迅速定位并执行相应的处理程序。例如,当定时器中断触发时,MCU会根据中断号从IVT中获取ISR地址。

以下是一个简化的IVT结构示例:



IVT通常存储在闪存(Flash)中,但可以通过向量表偏移寄存器(VTOR)将其重定位到其他内存区域(如SRAM),以支持动态更新或引导加载程序(Bootloader)场景。

ARM Cortex-M处理器通过嵌套向量中断控制器(NVIC)管理中断。以下是中断处理的具体步骤:

完成当前指令:处理器首先完成当前正在执行的指令,除非该指令是可中断继续指令(interrupt-continuable instruction)。这确保了指令的原子性。保存上下文:处理器自动将当前程序的上下文保存到堆栈上,包括寄存器R0-R3、R12、链接寄存器(LR)、程序计数器(PC)和程序状态寄存器(xPSR)。这些寄存器共占用32字节(每个寄存器4字节)。对于使用浮点单元(FPU)的系统,FPU寄存器也可能被保存。读取中断号:NVIC从中断程序状态寄存器(IPSR)获取中断号(异常号),该中断号用于索引IVT。获取ISR地址:使用中断号N,处理器计算IVT中的地址(4 × N),从中读取ISR的起始地址。例如,SysTick中断(异常号15)的地址位于0x0000003C。更新寄存器:处理器更新堆栈指针(SP)、链接寄存器(LR)和程序计数器(PC)。LR被设置为特殊值(如0xFFFFFFF9),指示返回模式(例如,返回线程模式并使用主堆栈指针)。执行ISR:处理器跳转到ISR地址并执行中断处理程序。ISR通常会清除中断标志并执行必要的操作。异常返回:ISR完成后,处理器从堆栈恢复保存的上下文,并使用LR中的特殊值返回到被中断的程序,继续执行。

向量表通常在启动代码中定义,由工具链提供或由开发者编写。在C语言中,向量表可以定义为一个函数指针数组。例如:

void (* const vectors[])(void) __attribute__((section(".vectors"))) = {
    (void (*)(void)) &_stack_top, // 初始堆栈指针
    Reset_Handler,                // 复位处理程序
    NMI_Handler,                  // NMI处理程序
    HardFault_Handler,            // 硬故障处理程序
    // ... 其他处理程序
    SysTick_Handler               // SysTick处理程序
};

其中:

_stack_top由链接脚本定义,表示堆栈顶部地址。__attribute__((section(".vectors")))确保数组被放置在链接脚本指定的.vectors段,通常映射到0x00000000。每个处理程序(如Reset_Handler)是一个函数,定义在其他代码文件中。

在汇编语言中,向量表可能如下定义(以Keil MDK的startup.s为例):

    .section .vectors    .word _estack    .word Reset_Handler    .word NMI_Handler    .word HardFault_Handler    // ...    .word SysTick_Handler

链接脚本确保.vectors段位于正确地址。开发者通常无需直接修改向量表,只需实现对应的ISR函数。

2、编写中断服务例程

ISR是处理特定中断的函数,必须高效且可靠。以下是编写ISR的最佳实践:

保持简洁:ISR应尽量短,避免复杂计算或阻塞调用。清除中断标志:确保清除触发中断的标志,以防止重复触发。使用volatile变量:防止编译器优化导致变量访问错误。避免嵌套复杂逻辑:如果需要复杂处理,可将任务标记为待处理并在主循环中执行。

以下是一个简单的定时器中断ISR示例:

.section .vectors
    .word _estack
    .word Reset_Handler
    .word NMI_Handler
    .word HardFault_Handler
    // ...
    .word SysTick_Handler

ARM Cortex-M通过NVIC支持嵌套中断,允许高优先级中断抢占低优先级中断。优先级通过NVIC的优先级寄存器(IPR)配置,值越小优先级越高。例如,Cortex-M3/M4支持最多256个优先级级别,但具体实现可能只使用部分位(如4位,支持16个级别)。

开发者可以通过以下方式管理中断优先级:

使用NVIC函数(如NVIC_SetPriority(IRQn, priority))设置优先级。通过__enable_irq()和__disable_irq()全局启用或禁用中断。使用BASEPRI寄存器屏蔽低于某优先级的中断(在Cortex-M3/M4中支持)。

嵌套中断的典型场景是高优先级中断(如紧急传感器触发)打断低优先级中断(如定时器任务),确保关键任务优先执行。

从向量表到中断服务的过程是嵌入式系统中中断管理的核心。通过理解IVT的结构、中断处理流程以及如何配置和编写ISR,开发者可以设计高效、实时的嵌入式系统。ARM Cortex-M的NVIC和硬件优化(如尾链式处理)进一步降低了中断延迟,提高了系统性能。

虽然本文以ARM Cortex-M为例,但其他MCU(如8051)也有类似的中断处理机制,尽管向量表地址和异常号可能不同。开发者应参考具体MCU的数据手册和工具链文档以获取详细信息。




关键词: MCU     中断服务    

院士
2025-08-03 16:00:50     打赏
2楼

可中断继续指令(interrupt-continuable instruction)。参考MCU的数据手册和工具链文档,以获取向量表地址和异常号等信息。

谢谢分享。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
高项是什么 央行放水是什么意思 干咳吃什么药好的快 药敏试验是什么意思 为什么脸上老长痘痘
才高八斗是什么生肖 bayer是什么药 胃疼适合吃什么食物 头脑简单是什么生肖 出马什么意思
乳腺病人吃什么好 心脏官能症吃什么药 什么的名字 拿乔是什么意思 奶粉罐可以做什么手工
什么水果补钙 妈富隆是什么药 炜字五行属什么 疏肝理气是什么意思 喝什么水对身体好
什么是碱性磷酸酶高怎么回事hcv8jop0ns7r.cn 阴虱是什么hcv9jop5ns4r.cn 一月来两次月经是什么原因hcv8jop7ns9r.cn 浓鼻涕吃什么药hcv7jop6ns2r.cn 入赘是什么意思baiqunet.com
8000年前是什么朝代hcv9jop5ns4r.cn 恨铁不成钢是什么意思hcv8jop7ns1r.cn 胆囊炎是什么hcv8jop3ns9r.cn hdr是什么拍照功能bjcbxg.com 长血痣是什么原因hcv9jop0ns4r.cn
镜架什么材质好hcv9jop3ns3r.cn 尿频是什么症状hcv9jop6ns9r.cn 男人左眼下有痣代表什么hcv7jop6ns0r.cn 多读书有什么好处hcv9jop2ns0r.cn 狗女配什么属相最好hcv7jop7ns0r.cn
杀手锏是什么意思aiwuzhiyu.com 吃什么降血压hcv7jop7ns2r.cn roma是什么牌子hcv7jop9ns4r.cn 女同什么意思hcv8jop4ns2r.cn 感冒吃什么水果好hcv8jop9ns4r.cn
百度