GD32 BootLoader跳转踩大坑了
本帖最后由 cyneer 于 2019-9-20 16:36 编辑使用BootLoader跳转过来,可以进入App,但发现初始化FreeRTOS任务时系统卡住了,也不在HardFault也不往其它地方执行程序:
App中使用了以下设置:
结果发现是GD32的库函数,gd32f30x_misc.c下的这个函数,又把中断向量表重新设置回了0x08000000的位置………………………………………………
/*!
\brief configures the nested vectored interrupt controller
\paramnone
\param none
\retval none
*/
static void nvic_configuration(void)
{
//nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x0); //已经设置了中断向量表,这里不用再重设
nvic_irq_enable(ENET_IRQn, ATKMODU_HIGHTEST_INTPRY, 0);//nvic_irq_enable(ENET_IRQn, 2, 0);
}
{:huffy:}{:huffy:}
实际上是在配置网络那个函数里,重新设置了一下中断向量表:
void enet_system_setup(void)
{
nvic_configuration();
________其它省略。
}
库函数用顺手了,结果踩大坑了………………………………
我的内心…………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
感谢!让我们以后不跳这个坑。 嗯,做 BOOTLOAD, 要注意 中断向量表的地址迁移 这个确实要注意 自己没有细心弄,就从别人身上找原因? Ketose 发表于 2019-9-29 09:39
自己没有细心弄,就从别人身上找原因?
也不能怪库函数,毕竟人家要默认设置一下存放地址的开点。 你应该自己断章取义,用其他库函数哈。 楼主,nvic_configuration(void)这个函数不是库函数哟,这个只是例程中的中断配置而已 感谢楼主 有Bootloader的,中断向量就需要重新配置。 正常,之前也有过这个问题。 哈哈,下回注意,开发就是踩了坑,以后就不会再踩这个坑了。 踩个坑长个记性 中断向量表要重新配置吧 帮大忙了,找了半天没找到为啥跳不去中断处理
页:
[1]