stm32 iAP成功跳转APP 但是没有执行 正解在5楼

2019-12-17 21:29发布

本帖最后由 天涯行客 于 2014-12-4 12:37 编辑

程序所有配置都没有问题,就是不执行APP程序,不知道怎么回事啊 2014-12-04_105927.png (77.37 KB, 下载次数: 4) 下载附件 2014-12-4 11:00 上传

程序跳转代码

        if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
        {
            SerialPutString("Execute user Program ");

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

            __set_MSP(*(__IO uint32_t*) ApplicationAddress);
            Jump_To_Application();
        }
#define ApplicationAddress    0x8010000


我APP程序比较大 生成的BIN文件有60K左右,会是堆栈溢出的问题吗?


正解在5楼
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
64条回答
天涯行客
1楼-- · 2019-12-18 03:17
串口调试助手 显示 Execute user Program
varding
2楼-- · 2019-12-18 08:04
 精彩回答 2  元偷偷看……
Jmhh247
3楼-- · 2019-12-18 10:07
可以先写一个简单的APP,比如控制LED,调通之后再测试你的最终APP。
xf331785508
4楼-- · 2019-12-18 12:21
本帖最后由 xf331785508 于 2014-12-4 11:42 编辑

我遇到过,能进用户程序,但所有跟中断有关系的外设全部失灵,后来在本坛无意中发现有人在跳用户程序之前关所有中断,进到用户程序后,在中断向量表地址设定完成后再开中断。OK 了。

  1.     __set_PRIMASK(1);
  2.     if(((*(__IO uint32_t *) ApplicationAddress) & 0x2FFE0000) == 0x20000000)
  3.     {
  4.       __ASM("CPSID  I");
  5.       JumpAddress = *(__IO uint32_t *) (ApplicationAddress + 4);
  6.       Jump_To_Application = (pFunction) JumpAddress;
  7.       
  8.       __set_MSP(*(__IO uint32_t *) ApplicationAddress);
  9.       Jump_To_Application();
  10.     }
  11.     else
复制代码

__ASM("CPSID  I");   //注意这句

  1.     NVIC_InitTypeDef NVIC_InitStructure;
  2.     EXTI_InitTypeDef EXTI_InitStructure;
  3. #ifdef  VECT_TAB_RAM
  4.     /* Set the Vector Table base location at 0x20000000 */
  5.     NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
  6. #else  /* VECT_TAB_FLASH  */
  7.     /* Set the Vector Table base location at 0x08000000 */
  8.     NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x9000);
  9.     __ASM("CPSIE  I");
  10. #endif
  11.     //   Configure one bit for preemption priority
  12.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  13.     NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  14.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  15.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  16.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  17.     NVIC_Init(&NVIC_InitStructure);
复制代码
zxq6
5楼-- · 2019-12-18 13:35
注意中断向量表的移动
xly2014
6楼-- · 2019-12-18 17:24
恩,STM32 IAP 跳转 APP

一周热门 更多>