中断向量表地址对齐(中断向量表实际大小与设置的偏移大小相等)

本文详细阐述了Cortex-M4处理器中向量表偏移寄存器TBLOFF的设置技巧,重点在于如何确保偏移量与异常条目数量对齐,最小对齐为128 words,并解释了对齐的重要性以避免中断错误。实例演示了不同中断数量下的对齐策略,如21中断对齐到64 words。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vector table offset register 向量表偏移寄存器
构成:FLASH基地址 | 偏移大小.
基于FLASH基地址偏移的words数,对于32位MCU来说,words的值为16bit.
对于向量表偏移寄存器来说,最小可以设置为128 ,因为寄存器的0-7位保留,意思是说基于FLASH基地址偏移128words.
在这里插入图片描述

在设置TBLOFF时,必须将偏移量与向量表中的异常条目数量对齐。最小对齐是32个words(也就是322=64B),足够16个中断(每个中断占用4个字节,总共是164 = 64B)。对于更多中断,通过舍入到2的下一个幂(二进制左移一位是2的几次方,只能通过左移来增加值,所以2的下一次幂应该是6(64))来调整对齐。例如,如果需要21个中断,则对齐必须在64个words的边界上,因为所需的表大小是37个word(这里的原文表述有误,应该是42个words),2的下一个幂是64。

Cortex-M4
在这里插入图片描述

它包含从内存地址Ox00000000到表基的偏移量的位[29:9]。在设置TBLOFF时,必须将偏移量与向量表中的异常条目数量对齐。最小对齐长度为128个words。
总结:
对齐的操作一般是在系统运行中需要重定向中断向量表,而在系统复位上电后,中断向量表默认是在FLASH的起始地址上往后排布,如果之后设置的偏移量小于向量的数目,就会造成执行到错误的中断函数,所以设置的偏移量必须大于或者等于向量数量。
在这里插入图片描述

如果偏移量为0x80,中断向量表在flash 中排版
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值