STM32Cube_FW_F4_V1.16.0库的DFU例程复位不了,ST代码的BUG?

2019-07-20 10:52发布

STM32Cube_FW_F4_V1.16.0库的DFU例程复位不了:(要用DFU实现IAP功能)
运行库里的DFU_Standalone例程,用st的DFU升级工具 dfuse demo 升级后,点击leave dfu mode 按钮,程序不复位,因此无法进入自己烧写的程序中。
寻找原因,上位机点击leave dfu mode 按钮后,DFU_Standalone例程进入USB中断,一路执行到DFU_Leave()函数:
    /* Disconnect the USB device */
    USBD_Stop (pdev);

    /* DeInitilialize the MAL(Media Access Layer) */
    ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->DeInit();

    /* Generate system reset to allow jumping to the user code */
    NVIC_SystemReset();      //此处执行会进行芯片复位

    /* This instruction will not be reached (system reset) */
    for(;;);

但是运行发现程序并未执行到NVIC_SystemReset();  ,而是死循环在USB_DevDisconnect()里面调用的HAL_Delay(3U)函数中。
HAL_Delay为systick提供的时间计数器,每毫秒会中断一次。
怀疑是例程中断优先级配置不对,有没有人遇到过此问题?难道ST的人写出了BUG??大神帮忙解答一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。