2019-07-21 01:23发布
午夜狼嚎 发表于 2018-8-28 21:55 没有
windowswan 发表于 2017-9-28 15:26 跳转前,把所有的中断关闭,io复位为初始状态
最多设置5个标签!
中断向量表只有一个,要么IAP里使用,要么APP里使用,一般我们都是在APP里使用,如果IAP里一定要使用,那么在APP跳转到IAP时不要使用Jump跳转代码,直接对内核复位,复位前在内部flash某一位置做一个标志,复位后首先进入的是IAP,在IAP里读取标志位,判断是否升级,不需要就使用Jump跳转代码跳转到APP(APP第一句记得修改中断向量表偏移地址),需要升级就进入升级程序,升级完清除升级标志,然后内核复位,千万不要升级完跳转,跳转会导致APP里中断找不到中断向量表入口地址,尽管你在APP里设置了偏移地址也没用。为何复位内核能够使IAP和APP里的中断能正常使用,是因为复位内核后中断向量表会被重置。下面是内核复位代码,调用NVIC_CoreReset();即可。
跳转前有做啊,跳转前__set_PRIMASK(1); NVIC_DeInit(); RCC_DeInit();
请参考正点原子教程中,怎么把一般程序转成APP程序的相关章节。
另外,可以参考http://www.openedv.com/forum.php ... id=83250&extra=中第15篇第二部分。
一周热门 更多>