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