[STM32F1] stm32 iap app

[复制链接]
1770|7
 楼主| lixglixg 发表于 2014-6-26 17:57 | 显示全部楼层 |阅读模式
请教高手用stm32做iap,从iap跳到app运行正常,但从app跳到iap后不能进入中断。已修改中断向量。
zchong 发表于 2014-6-26 18:31 | 显示全部楼层
怎么跳转的?会不会是sp不对
 楼主| lixglixg 发表于 2014-6-27 09:11 | 显示全部楼层
                SysTick_ITConfig(DISABLE);
                TIM_ITConfig(TIM4,TIM_IT_Update,DISABLE);//允许更新中断
                RTC_ITConfig(RTC_IT_SEC, DISABLE);//打开中断
                TIM_ITConfig(TIM1,TIM_IT_Update,DISABLE);//允许更新中断
                USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);//使能串口接收中断

                NVIC_DeInit();
         
                    kyj_To_Application  = (kyjFunction)(*(vu32*) (0x08000000 + 4));
                __MSR_MSP(*(vu32*) 0x08000000);
                (*kyj_To_Application)();
请帮忙指点一下 谢谢
 楼主| lixglixg 发表于 2014-6-27 09:13 | 显示全部楼层
同样方法,iap跳到app正常,谢谢,app地址 0x08003000
wenunit 发表于 2014-6-27 09:44 | 显示全部楼层
不进IAP,直接跳APP就好了.
 楼主| lixglixg 发表于 2014-6-27 09:53 | 显示全部楼层
主要是为现场升级方便,需要app返回iap,
Jsilcon 发表于 2014-6-27 15:21 | 显示全部楼层
lixglixg 发表于 2014-6-27 09:53
主要是为现场升级方便,需要app返回iap,

可以软件复位
runningwzf 发表于 2014-6-28 00:01 | 显示全部楼层
堆栈问题:

//计算跳转的位置
JumpAddress = *(__IO INT32U*) (APP_ADD_FIREWARE + 4);
Jump_To_Application = (pFunction) JumpAddress;
//设置堆栈指针
__set_MSP(*(__IO INT32U*) APPU_ADD_FIREWARE);       
__set_PSP(*(__IO INT32U*) APP_ADD_FIREWARE);
__set_PRIMASK(0);
__set_CONTROL(0);
Jump_To_Application();
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

117

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部