我调试STM32程序,带RT-Thread操作系统,将程序起始位置修改为0x08008000,程序就不能正常运行了,如改回成0x08000000,就可以了。如果我不用操作系统程序没问题。有谁晕倒过这样的事啊?求助!
找到原因了,原来在RTT的系统里初始化程序有两次重复修改了SCB->VTOR寄存器。
首先修改
#define VECT_TAB_OFFSET 0x8000 |
#ifdef VECT_TAB_SRAM
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
2、boad.c文件下,NVIC_Configuration():
#ifdef VECT_TAB_RAM
/* Set the Vector Table base location at 0x20000000 */
//NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else /* VECT_TAB_FLASH */
/* Set the Vector Table base location at 0x08000000 */
//NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
将红色部分注释掉就可以正常跳转了。