GD32F470 跳转APP失败(MDK可以,IAR不行)

[复制链接]
 楼主| caizhiwei 发表于 2023-3-22 15:14 | 显示全部楼层 |阅读模式
        最近要求把APP的工程和BOOTloader的工程统一成IAR.
所以找了一个iar工程模板(官方历程),再把MDK的代码挪过去。
为了测试,BOOTLoader很简单,进来后直接跳转!
  1. typedef  void (*pFunction)(void);
  2. pFunction Jump_To_Application;
  3. unsigned int JumpAddress;
  4. uint32_t app_startaddr = 0;

  5. void Jump2App(uint32_t app_start_address)
  6. {
  7.         //检测用户代码是否从APPLICATION_ADDRESS被编程  
  8.         if (((*(__IO uint32_t*)app_start_address) & 0x2FFE0000 ) == 0x20000000)
  9.         {
  10.                 JumpAddress = *(__IO uint32_t*) (app_start_address + 4);  //跳转至用户程序
  11.                 Jump_To_Application = (pFunction) JumpAddress;                                               
  12.                 __set_MSP(*(__IO uint32_t*) app_start_address);           //初始化用户程序的堆栈指针               
  13.                 Jump_To_Application();                                      //跳转至应用程序
  14.         }
  15. }


就这么一个函数,mdk工程一点问题没有,放到IAR 就是不行,跳过去了APP起不来。
大家又遇到过类似的吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

857

帖子

16

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