stm32f407_IAP问题
有时IAP下载失败,只能开机重新下载,请问各位有没有遇到这样的问题?没有遇到过 没有遇到过 /****
* 执行用户程序
*
*/
void ExeAPP(u32 appaddress)
{
//若没写这个if,程序容易跑飞
// 判断栈定地址值是否在0x2000 0000 - 0x 2000 2000之间
if (((*(__IO uint32_t*)appaddress) & 0x2FFE0000 ) == 0x20000000)
{
printf("找到栈地址,0x20000000\r\n");
//__set_FAULTMASK(1);//关闭所有中断,不知道这个是不是要加
JumpAddress = *(__IO uint32_t*) (appaddress + 4);
//跳转至用户代码
Jump_To_Application = (pFunction) JumpAddress;
//初始化用户堆栈指针
__set_MSP(*(__IO uint32_t*) appaddress);
Jump_To_Application();
}
else
{
//程序不合法,去掉更新成功标志,转为需要更新的状态
printf("程序不合法,理应继续往下执行 \r\n");
//程序不合法,复位
//Sys_ReBoot();
}
} 你是BOOT下载失败还是通过BOOT下载应用程序失败啊
我建议你把应用程序中跳转回BOOT的指令直接换成软复位指令 没有遇到过 没有遇到过 刚开始接触。
页:
[1]