GD32 Bootloader(IAP)APP程序中断问题,下载后中断向量表仍然是BOOT的中断,而不是APP的
本帖最后由 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(); // ???????
}
在APP程序的起始部分,添加代码来更新中断向量表。 在下载APP程序后,使用调试工具检查中断向量表是否已正确更新。
通过触发中断并观察处理器的响应来测试中断处理是否正确。 在APP程序中更新中断向量表 在设置Keil等开发环境时,要保证Bootloader和APP程序被分配到正确的内存区域。 因为跳转后的APP默认了原来的中断向量。要在app中修改中断向量 APP中又改回去了吧,顺藤摸瓜,研究一下
页:
[1]