DFU实验跳转了不向下运行

[复制链接]
3774|8
 楼主| adamdo001 发表于 2011-5-31 13:56 | 显示全部楼层 |阅读模式
ic, IO, TI, Appli, ST
我使用STM32_USB-FS-Device_Lib_V3.2.\Project\Device_Firmware_Upgrade\EWARMv5\DFU例程,进行IAP实验,IAP下载成功了,但下载进去的程序没有运行。
if (DFU_Button_Read() != 0x00)
  { /* Test if user code is programmed starting from address 0x8004000 */
    if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
    { /* Jump to user application */
      JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) ApplicationAddress);
      Jump_To_Application();
}
  } /* Otherwise enters DFU mode to allow user to program his application */
  /* Enter DFU mode */
  DeviceState = STATE_dfuERROR;
  DeviceStatus[0] = STATUS_ERRFIRMWARE;
  DeviceStatus[4] = DeviceState;
  Set_System();
  Set_USBClock();
  USB_Init();
  /* Main loop */
  while (1)
  {
  }
查代码发现Jump_To_Application();好像没有起作用。前一句将(*(__IO uint32_t*) ApplicationAddress载入了MSP。

单步调试发现,程序在Jump_To_Application();运行了几步,继续向下,一直运行到了while(1).

不知是怎么回事?盼高手解答。
 楼主| adamdo001 发表于 2011-5-31 13:57 | 显示全部楼层
CPU是stm32F103VB,,开发环境IAR for ARM 5.40
dz050718 发表于 2011-5-31 15:26 | 显示全部楼层
有没有优化?
 楼主| adamdo001 发表于 2011-5-31 18:10 | 显示全部楼层
能跳转了。但是又一个问题出现了。
在开发板上,按下USER_LEY,重启,一开始能被PC识别出来是STM Device in DFU Mode,下载应用程序成功,
Leave DFU mode也成功。当再次去按下按下USER_LEY,重启,PC就不识别了,成了Unknown Device
。试了许多次都是这样。
 楼主| adamdo001 发表于 2011-5-31 18:11 | 显示全部楼层
USER_LEY对应程序里的DFU_KEY.不按是1,按下是0
 楼主| adamdo001 发表于 2011-6-1 18:01 | 显示全部楼层
我已解决。
ljc_wf 发表于 2011-12-15 20:03 | 显示全部楼层
6楼怎么解决的  我也同样问题 啊
香水城 发表于 2011-12-16 08:59 | 显示全部楼层
6楼怎么解决的  我也同样问题 啊
ljc_wf 发表于 2011-12-15 20:03


你不是解决了吗?
https://bbs.21ic.com/icview-295505-1-1.html
香水城 发表于 2011-12-16 08:59 | 显示全部楼层
6楼怎么解决的  我也同样问题 啊
ljc_wf 发表于 2011-12-15 20:03


你不是解决了吗?
https://bbs.21ic.com/icview-295505-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

92

帖子

0

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