首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教中断向量表的位置计算

请教中断向量表的位置计算

stm32f10x_nvic.c中有这个函数:

void NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)


{



/* Check the parameters */



assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));



assert_param(IS_NVIC_OFFSET(Offset));





SCB->VTOR = NVIC_VectTab | (Offset & (u32)0x1FFFFF80);


}



这里的0x1FFFFF80是不是不正确呢?不是应该0x1FFFFE00吗?
参照 Cortex-M3权威指南Cn P113 如果一共有68个中断,则共有68+16(系统异常)=84 个向量,向上增大到2 的整次幂后值为128,因此地址地址必须能被128*4=512 整除,从而合法的起始地址可以是:0x0, 0x200, 0x400 等。那么不是应该0x1FFFFE00吗?


谢谢。
返回列表