【问题】stm32 usbtmc通过USB线连接到电脑上时,开机上电,此时电脑的NI软件无法识别到设备的序列号资源。电脑右下方弹出提示框【“无法识别的USB设备”】。
初步调试的结果是:初始化延时等的处理耗时太长,导致中断处理等延后,使得USB的J/K信号传输等枚举量中断。
后来调试结果发现是bootloader中在跳转到app程序前的延时delay(500000)处理导致的。如下所示;
而且有如下的三种跳转流程操作,会导致不一样的结果:
【跳转操作一】
若是bootloader的main函数中未进行其他外设时钟的配置,直接跳转app,如下图所示。再此处理流程下,设备连接USB开机上电,PC机无法识别usbtmc,甚至存在死机的情况。而且如果当开机到usbtmc硬件初始化完成的时间在5.3s/10s/26s的情况,此时PC机可以识别USB,当时间间隔为7s/7.8s时,PC机无法识别usbtmc。
【跳转操作二】
若是bootloader的main函数中执行了 HAL_Init()之后再跳转到app,如下图所示。此时设备连接开机上电,PC机可以识别usbtmc,但存在异常。