求助原子哥关于IAP代码的问题

2019-07-20 11:09发布

官方的IAP跳转如下
else
  {
    /* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
    if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
    {
      /* Jump to user application */
      JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      /* Initialize user application's Stack Pointer */
      __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
      Jump_To_Application();
    }
  }


原子哥的如下
if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)//判断是否为0X08XXXXXX.
                        {         
                                iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码
                        }

求助大家红体部分 0x2FFE0000 ) == 0x20000000)    0xFF000000)==0x08000000)
这有什么区别,还有APP地址后面+4是为了向量表吗?谢谢


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。