STM32L433串口IAP升级问题

使用STM32L433 的串口IAP升级,app程序正常写入到FLASH中了,但是跳转APP程序后却不运行。是什么原因?
调整代码

if(((*(vu32*)(FLASH_APP1_ADDR+0x00000004))&0xFF000000)==0x08000000)
{
        HAL_UART_Transmit_IT(&huart3 , (uint8_t *)"RAN_APP" , 7);
        HAL_Delay(100);
        iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码    
}

void iap_load_app(uint32_t appxaddr)
{
    if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)    //检查栈顶地址是否合法.
    { 
        __disable_irq();
        jump2app=(iapfun)*(vu32*)(appxaddr+4);        //用户代码区第二个字为程序开始地址(复位地址)        
        MSR_MSP(*(vu32*)appxaddr);                    //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
        jump2app();                                    //跳转到APP.
    }
}    

app程序就是一个串口打印。以前用STM32F303的芯片是好的,后来因为STM32L4芯片FLASH只能双字写入,所以自己做了修改,但是就出问题了