打印

GD32F450 IAP 无法跳转到应用程序

[复制链接]
715|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liboguang|  楼主 | 2024-9-21 17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IAP程序占用的空间是 0x08000000--0x0801FFFF
APP程序占用的空间是 0x0802 0000 to 0x0807FFFF

#define ApplicationAddress 0x8020000

跳转程序代码如下:
typedef  void (*pFunction)(void);

void reboot_app(void)
{
  pFunction Jump_To_Application;
  u32 JumpAddress;
       

        if(((*(uint32_t*)ApplicationAddress)&0x2FFE0000)==0x20000000)        //检查栈顶地址是否合法.
        {
               
                //__set_PRIMASK(1);// 关闭全局中断。注意,在跳转前,必须先关闭全局中断,进入用户程序后,在中断向量表地址设置完成后再开中断。       
                __disable_irq(); //关中断()
                __set_FAULTMASK(1);//关闭所有中断

                JumpAddress =  *(__IO uint32_t*) (ApplicationAddress + 4);
                Jump_To_Application = (pFunction) *(u32*) JumpAddress;

                //initialize user application's stack pointer
                __set_MSP(*(__IO uint32_t *)ApplicationAddress);       

                SCB->VTOR = ApplicationAddress;                                                                //重定向中断向量表

                Jump_To_Application();
        }

}

程序下载完成后,执行到Jump_To_Application就死掉了,进不到应用程序里面,以前用GD32F1x系列都没问题,这个F4xx跳转有什么不同吗?麻烦知道的同仁给指点一下!不胜感激!!

使用特权

评论回复
沙发
szt1993| | 2024-9-24 13:37 | 只看该作者
是不是这个函数就有问题,一般情况下是这样的

使用特权

评论回复
板凳
onlycook| | 2024-9-25 11:10 | 只看该作者
检查系统时钟设置

使用特权

评论回复
地板
sagade| | 2024-9-25 16:52 | 只看该作者
栈顶会不会在TCM,还有中断向量表不是APP里面重定向的吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

10

帖子

0

粉丝