Board logo

标题: 请教中断向量表的位置计算 [打印本页]

作者: feitiandadao    时间: 2012-2-1 11:23     标题: 请教中断向量表的位置计算

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吗?


谢谢。





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0