本帖最后由 watch361 于 2025-2-28 10:28 编辑
芯片GD32e103 跳转代码如下,但是触发的中断一直是Bootloader的中断,我的问题是,为何改变中断向量表地址无效,仍然选择0x8000000的向量表。导致APP中断不触发void jumpToApplication(){
uint32_t applicationAddress = 0x08004000; // ????????
// 关闭所有中断
__set_PRIMASK(1);
// 设置应用程序的堆栈指针
__set_MSP(*(volatile uint32_t *)applicationAddress); // ???????
// 设置中断向量表地址
//nvic_vector_table_set(NVIC_VECTTAB_FLASH, applicationAddress);
SCB->VTOR = applicationAddress;
// nvic_vector_table_set(NVIC_VECTTAB_FLASH, applicationAddress);
typedef void (*pFunction)(void);
pFunction application = (pFunction)(*((volatile uint32_t *)(applicationAddress + 4)));
application(); // ???????
}
|