IAP跳转到跑UCOSIII系统的APP出错,原子求教

2019-07-20 07:35发布

说明:IAP没跑UCOS,是裸机。现象:如果用一个没跑UCOS的APP,那么IAP跳转APP,和APP跳转到IAP,一切正常。问题就出在,同一个IAP,APP换成跑UCOSIII的程序后,能跳转到APP,但是在执行第一个任务的时候就死了。(PS:其实APP我就是用的原子的例程:9-1UCOSIII软件定时器例程),注意:我在main函数开头加了SCB->VTOR = FLASH_BASE | 0x4000,而且IROM1里面也设置了其实地址0x8004000。main函数里创建了StartTask,一执行到StartTask就死了。原子,各位大神求教???什么原因??

用的F429的阿波罗板子
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
BUGFWER
2019-07-21 11:02
好了,
加了一句SCB->VTOR=ApplicationAddress;在IAP程序跳转之前的程序里面,但是没道理啊,我在APP程序里面加了这一句了,我把我可以的程序贴上来看看
void vfnExtiIap(void)
{  
  int i;
  unsigned long int JumpAddress;
  pFunction JumpToApplication;   
  if(((*(volatile unsigned long int *)ApplicationAddress)&0x2fff0000)==0x20000000)
  {                                               
    JumpAddress=*(volatile unsigned long int *)(ApplicationAddress+4);
    JumpToApplication=(pFunction)JumpAddress;  
        SCB->VTOR=ApplicationAddress;
        __set_BASEPRI(0);
    __set_FAULTMASK(0);                
        __set_PSP(*((volatile unsigned long int *)ApplicationAddress));                  //重新设置进程PSP堆栈地址
    __set_MSP(*((volatile unsigned long int *)ApplicationAddress));  
        __set_CONTROL(0);
        __ISB();
    __disable_irq();                                                                                                          
    JumpToApplication();
  }
}

一周热门 更多>