stm32 usbtmc 连接设备上电时无法识别

本文介绍了在stm32设备上,usbtmc连接电脑时遇到的识别问题。问题源于bootloader中的延时处理,导致USB枚举过程中断。通过对比分析三种不同的跳转操作流程,发现在HAL_Init()或HAL_Init()与SystemClock_Config()后跳转到app,设备能被正确识别。而未进行时钟配置的跳转则可能导致无法识别或系统异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【问题】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,但存在异常。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值