中断向量表地址偏移的对齐要求

前言:

首先我们知道,中断向量表是可以重定位的:由NVIC中VTOR寄存器控制。

而这个重定位的地址是有要求的,不能随便找个地址放中断向量表,这个地址对齐要求就叫“中断向量表的二次幂对齐”。

“中断向量表的二次幂对齐”指的是 中断向量表对 偏移量大小 的要求 ,在进行中断向量表偏移时,需要向上圆整,否则会出错。

偏移量大小 计算方法:

(内部异常+外部中断个数)×4 就是异常和中断所占的字节数,在字节数的上方 寻找离字节数最近的2的幂数。

计算过程:

以 STM32F411CEU6 为例,内部异常有16个,外部中断有87个,加一起103个,每个中断向量为 4 个字节,那么偏移量初步计算为 103 × 4= 412 ,在 412 之上,距离412 最近的 2 的幂数为 2 的 9次方 512,所以偏移量取 512.

512 转化为 16 进制 为 200,转化为地址就是 0x200。

得出结论:

在 STM32F411CEU6 中,如果中断向量表需要偏移到其他位置,那么这个位置必须是能够被 0x200 整除的。

补充:在STM32F411的平台上,中断向量表偏移地址,必须是512的倍数(The minimum alignment is 128 words),参考下图。同时,VTOR的低9位必须是0(bits[8:0] of the table offset are always zero)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值