stm32-STM32 IAP程序进行到最后一步jump2app();;后就进入hardfault死循环,怎么解决?

问题描述

STM32 IAP程序进行到最后一步jump2app();;后就进入hardfault死循环,怎么解决?

调用下面的程序后就出错,APP程序写在了FLASH中
//跳转到应用程序段
//appxaddr:用户代码起始地址.
void iap_load_app(u32 appxaddr)
{
//(用户代码的第一个字存放的是堆栈的栈顶地址,下面即检查此地址)

if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000) //检查栈顶地址是否合法(用户代码的第一个字存放的是栈顶地址,即检查此地址)
{
    jump2app=(iapfun)*(vu32*)(appxaddr+4);      //用户代码区第二个字为程序开始地址(复位中断向量地址),强制把该地址转化为iapfun类型的函数指针,再赋给函数指针jump2app
    MSR_MSP(*(vu32*)appxaddr);                  //设置APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
    jump2app();                                 //跳转到APP的复位中断,程序由此开始执行
}

}

解决方案

从这段代码上看并没有什么问题,最好再找找有没有其他的原因,如应用程序存放的地址是否正确、应用中中断向量表是否配置正确等。

时间: 2024-09-12 21:18:45

stm32-STM32 IAP程序进行到最后一步jump2app();;后就进入hardfault死循环,怎么解决?的相关文章

把一个文件复制一份放到其他地址,比如stm32的一个程序,里面有头文件和源文件

问题描述 把一个文件复制一份放到其他地址,比如stm32的一个程序,里面有头文件和源文件 一分放桌面,复制一个放E盘,当打开桌面上的,修改里面的头文件后,保存,关闭,再打开E盘里面的,里面的头文件也变了,源文件没改变?为什么呢?修改的又不是E盘的?怎 么理解呢? 解决方案 http://www.cnblogs.com/infiniti/archive/2013/03/19/2968689.html

java 环境变量设置-错误: 程序包net.mindview不存在?能否通过设置环境变量来解决?请各位帮忙分析,谢谢

问题描述 错误: 程序包net.mindview不存在?能否通过设置环境变量来解决?请各位帮忙分析,谢谢 //: initialization/Flower.java // Calling constructors with "this" import static net.mindview.util.Print.*; public class Flower { int petalCount = 0; String s = "initial value"; Flow

python-大神帮我改一下程序吧。去掉第一个逗号后内容重复的行。只保留一条

问题描述 大神帮我改一下程序吧.去掉第一个逗号后内容重复的行.只保留一条 #!/usr/bin/python -*- coding: utf-8 -*- 原文本里边有重复的,去重复行 import requchong = open('G:07txtchongfuhang.txt''r').readlines()quchonghou = open('G:07txtchongfuhanghou.txt''w') unique_quchong = []for each_line in quchong:

数据结构、c语言-急!!!!为何以下程序执行第2功能离开车厂后在vc++6.0环境下程序会报错并终止运行,求解决方案

问题描述 急!!!!为何以下程序执行第2功能离开车厂后在vc++6.0环境下程序会报错并终止运行,求解决方案 #include "stdafx.h" #include #include #include #define max 5 #define pri 5 typedef struct time{ int year; int day; int month; int hour; int min; }Time; typedef struct node{ char num[10]; Tim

控件-急急急!!!!vb程序数据量比较大时VSflexgrid设置数据源假死机怎样解决????

问题描述 急急急!!!!vb程序数据量比较大时VSflexgrid设置数据源假死机怎样解决???? 使用vsflexgrid控件查看数据,当数据量比较大时(超过十万行),设置vsflexgrid数据源时程序假死机,等待一段时间才有响应,求大神指点!!! 解决方案 .Redraw一共有三个取值: flexRDNone --不刷新数据,要手工刷新数据才会显示 flexRDDirect --立即装入所有的数据,你应该是设置成了这个,所以速度慢 flexRDBuffered --显示部分数据,这种速度最

c++ cin-关于C++输入cin的问题,下面的程序,如果输入一个字符,那就将陷入死循环,为什么?

问题描述 关于C++输入cin的问题,下面的程序,如果输入一个字符,那就将陷入死循环,为什么? #include main() { int i; while(i!=-1) { cout<<"i=" cin>>i; cout< } } 上面的程序,如果输入的不合法,比如输入一个字符,那就将陷入死循环.解决的办法 有个一,把cin>>i;语句移到判断循环的语句,那么输入的如果是不合法的变量,他将跳出循环 . 解决方案 是不是将i转化为对应的ASCI

我的Asp.net C# Web程序,用了一段时间后他CPU自动疯涨

问题描述 我的Asp.netC#Web程序,用了一段时间后出现问题了.服务器我们是Window2003SP2数据库是MSSQL2005,.net2.0框架.情况是这样的,我们是用动网的代码生成器做的数据层.项目开发进入测试阶段后,我们发现系统在被3个以上用户使用后,系统进程中W3wp.exe开始疯涨,一度涨到100%,同时内存也跟着涨.这个项目我们做了对立的应用程序进程池,稍微缓解了一下,但是我们认为是程序问题,但是始终测试不出来.程序于数据库连接正常.每次使用大改10分钟左右,就会死掉.程序提

mfc-MFC 程序点击按钮DoModal一个对话框后,此时点击托盘关闭主窗口程序崩溃

问题描述 MFC 程序点击按钮DoModal一个对话框后,此时点击托盘关闭主窗口程序崩溃 如题,我在程序里DoModal了一个对话框,此时通过托盘关闭主窗口,程序就崩溃,而没有这个DoMal的时候关闭 主窗口确实正常的,什么原因

Windows 7下.exe程序无法运行?三步解决

前几天,论坛有用户反映Windows7中所有的.exe可执行程序都无法运行了,提示"文件没有与之关联的程序来执行".即使在运行窗口中输入要运行的程序也显示"不支持的接口".初步估计是被病毒改了exe文件的关联,于是新建一个用户进去,果然一切正常,打开注册表编辑器,将exe文件的关联键值导出,然后到老用户中去,双击刚才导出的reg文件,一切恢复正常. 导出的文件内容为: Windows Registry Editor Version 5.00 [HKEY_CLASSE