问题描述

现在的问题是,我们已经出货的设备在普通的电脑上都能正常识别,但是在西沃的平板上面的时候容易出现USB链接异常

STM32103VB + STB + USB 普通的设备库


出现问题的描述:

  1. 普通电脑上概率的出现,在已经接好USB的情况下启动,出现电脑无法识别的问题

这个在不同系统上测试有不同的效果, 也有多次出现上电之后反复断开连接多次会出现失败的问题


修改思路一:监测连接状态

这个思路是在高速版USB的版本中的一个出来断连的一个思路,于是在普通设备库中查找相关的变量

// usb_pwr.c
__IO uint32_t bDeviceState = UNCONNECTED; /* USB device status */typedef enum _DEVICE_STATE
{UNCONNECTED,ATTACHED,POWERED,SUSPENDED,ADDRESSED,CONFIGURED
} DEVICE_STATE;

于是此处在发现在上电之后这个状态基本不成功,于是有如下处理

/* 在 main 函数中 while 循环中添加如下处理 */
if ((bsp_get_systick() - usb_run_time) > 15000)
{b_print("[ %10u ]usb: dev_s:%d\r\n", bsp_get_systick(), dev_s);if (dev_s != CONFIGURED){usb_connect_s = 0;GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);b_print("usb: reset:%d\r\n", dev_s);//BEEP_EN();bsp_hw_delay_ms(300);//BEEP_DISEN();//USB 初始化USB_Interrupts_Config();Set_USBClock();USB_Init();//GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);}usb_run_time = bsp_get_systick();
}

测试发现

此方法确实有效,在一般的电脑上电偶然能出现USB链接多次的情况,就是上电的时候有多次断开与链接的系统声音

注意:此处的15s 是一个极其重要的时间刻度,测试发现如果这个断开连接的时间如果太短(测试过10s),断开连接几次之后最后还是会出现未识别的状态:【猜测这个时间短断连多次之后,系统会放弃响应次设备的断连操作,导致看似这个断开连接的检测操作有时候会无效】


后记

当决定使用这个方式出现现场问题的时候,未来方便方便线程老师确认我们设备的连接状态,于是我们想修改这个USB的处理,想在连接成功的时候,来这个蜂鸣器提示音【之前这个提示音是在设备初始化完成之后会有提示,现在改为:USB连接成功之后提示,因为中间可能有几次USB断开连接的电脑提示音,我们的设备增加提示音可能效果会好一点】

记录所有的修改

/******************************************************************************** @file    : main.c* @author  : Sam.wu* @version : v1.0.0
*******************************************************************************/
#include "main.h"
#include "usb_istr.h"
#include "platform_config.h"/******************************************************************************** 其他任务相关的变量
*******************************************************************************/
volatile uint32_t usb_run_time = 0;
volatile uint32_t usb_connect_s = 0;
uint32_t dev_s;extern uint32_t USB_bDeviceState(void);int main(void)
{u8 err = 0;ErrorStatus ret;uint32_t zlgt02_ver = 0;uint8_t i;//关闭中断GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);DISABLE_ALL_IRQ();//系统初始化Set_System();log_init();bsp_device_id_init();USB_Cable_Config(DISABLE);/******************************************************************************** 加密等器件初始化*******************************************************************************/ENABLE_ALL_IRQ();/******************************************************************************** 其他外设初始化*******************************************************************************/// USB初始化: 将USB初始化放在外设初始化的后面USB_Interrupts_Config();Set_USBClock();USB_Init();usb_run_time = bsp_get_systick();while (1){/******************************************************************************** 其他 任务运行函数*******************************************************************************//* USB 链接状态监测 */dev_s = USB_bDeviceState();if (dev_s != CONFIGURED){ledOn(LRED);bsp_hw_delay_ms(500);ledOff(LRED);bsp_hw_delay_ms(500);if ((bsp_get_systick() - usb_run_time) > 15000){b_print("[ %10u ]usb: dev_s:%d\r\n", bsp_get_systick(), dev_s);if (dev_s != CONFIGURED){usb_connect_s = 0;GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);b_print("usb: reset:%d\r\n", dev_s);//BEEP_EN();bsp_hw_delay_ms(300);//BEEP_DISEN();//USB初始化USB_Interrupts_Config();Set_USBClock();USB_Init();//GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);}usb_run_time = bsp_get_systick();}}else{if (usb_connect_s == 0){BEEP_EN();bsp_hw_delay_ms(300);BEEP_DISEN();usb_connect_s = 1;}}}
}
/*********************************END OF FILE**********************************/

经过测试,竟然发现在程序在,seewo 的设备上连接正常了,seewo 无论是开机测试还是重启测试再也没有出现

  1. 断连多次
  2. 无法识别

每次开机或者上电都是一次性连接完成,断连的检测逻辑一次都没有触发过

分析:这个生效的很可能是 连接设备成功之后的那个蜂鸣之后的延时 bsp_hw_delay_ms(300)

对于这个问题,暂时无法解释,先记录一下!

【项目笔记_答题器】rp552d usb hid 在seewo win10 设备上启动无法识别相关推荐

  1. springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题

    springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题 参考文章: (1)springboot学习笔记:12.解决springboot打成可执行jar在 ...

  2. 门禁上的push是什么意思_门禁门磁线接在什么设备上的

    门禁门磁虽然在我们生活中经常出现,但很少有人会关注到它.那么你知道门禁门磁线接在什么设备上的吗.接下来小编就给你介绍一下与之有关的家庭防盗小知识. 一般门禁系统配置:门禁主机.门禁电源.电控锁(电插锁 ...

  3. android html5播放器,用 HTML5 播放器在 iOS 或 Android 等移动设备上播放视频

    如果你想把自己网站上的视频弄得能在 iOS 或者 Android 设备上播放,你需要想两个事儿,一个是你网站上的视频播放器要支持 HTML5,还有你的视频得支持在这些设备上看. 网站的视频播放器我们可 ...

  4. 黑莓android驱动程序,黑莓管理器可让用户在任何Android设备上安装黑莓应用

    访问购买页面: 这款APP由XDA高级成员cobalt232开发,除了黑莓管理器之外,还有更多的优势,而不仅仅是免除ROOT需求,比如黑莓管理器也会自动修补这些应用程序,因此用户无需手动更新黑莓应用程 ...

  5. 【项目笔记_手写笔】在51822 上移植SSD1306驱动

    1. 问题描述 目前在手写笔项目中需要使用一块LCD来显示个人信息和当前工作状态等 2. 问题分析 2.1 芯片资料 查看数据说手册中的图,看到如何 看到这个数据格式为:[地址+控制字+数据字] 从 ...

  6. mt6765和骁龙665哪个好_华为都把骁龙850用在了自家的win10设备上了,麒麟还会远吗?...

    华为的友商高通曾发布了一款用于Windows设备的ARM处理器-骁龙850. 它采用10nm制程工艺打造,CPU拥有8个Kryo385核心,主频高达2.96GHz.GPU为Adreno630,支持DX ...

  7. UE4_Niagara基础2_学习笔记_枪火制作

    教程地址:https://www.bilibili.com/video/BV1fE411b7at 一套基础入门且案例非常完整的教程,能够比较快的走一遍制作流程 讲师:贾越(Epic Fornite T ...

  8. adrms移动设备扩展插件_如何在所有移动设备上扩展网站

    adrms移动设备扩展插件 我们大多数人都可以方便地访问互联网,上网购物,甚至使用我们的移动设备支付账单. 根据Forrester的一项研究, <数字商业势在必行> ,美国43%的银行客户 ...

  9. CSR8675学习笔记:USB HID通信

    为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...

最新文章

  1. java 指定文件格式_java删除指定目录下指定格式文件的方法
  2. a1278 win10声卡驱动_windows安装系列教程—驱动安装
  3. 从阿里中台战略看企业IT架构转型之道(下)
  4. java数组转换成string_java面试复习重点:类的管理及常用工具,教你抓住面试重点
  5. c语言程序设计课件第二章,c语言程序设计课件张元国 ISBN9787566300386 PPT第二章数据类型 运算符与表达式...
  6. Java实现将文件或者文件夹压缩成zip
  7. ruby scala python_解释一个基准在C,Clojure,Python,Ruby,Scala和其他
  8. LeetCode 802. 找到最终的安全状态(逆向图+拓扑排序)
  9. linux mpeg-4,嵌入式MPEG-4解码系统的设计与实现,嵌入式MPEG-4解码系统,嵌入式Linux,视频码流,P...
  10. STM32(三)-------流水灯(标准库函数)
  11. 2021最新Java零基础自学教程,java从入门到精通
  12. emoji粉色爱心符号_特殊符号
  13. win7和win10哪个好用
  14. python读取txt 符号分割 读取一条删除一条
  15. aqs clh java_Java并发编程:AQS对CLH锁的优化
  16. Failed to compile编译失败
  17. 终于又可以用WLW了.
  18. 川土微CA-IF1051 CAN收发器通过AEC-Q100 Grade 1认证
  19. Google MapReduce中文版
  20. ecs云服务器 系统登陆密码,云服务器ecs怎么登陆密码

热门文章

  1. 如何实现上传多个图片并依次展示_如何在一页PPT中插入多张图片,并保持其美感...
  2. 天涯论坛为什么不能删除或修改自己发表的贴子
  3. 以色列技术!Amimon无线WHDI技术解析
  4. 社会工程攻击——setoolkit使用(含错误解决)
  5. windows 上Miktex的镜像源最新配置方法
  6. 大物设计性实验:电容、电感量的测量
  7. 【总线】什么是并行传输?什么是串行传输?什么是异步传输?什么是同步传输?什么是等时传输?
  8. 以下关于python二维数据的描述中错误的是_关于二维数据CSV存储问题,以下选项中描述错误的是‪‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‪‫:...
  9. linux设置广播路由,如何设置路由器开启ssid广播 路由器开启ssid广播的详细方法...
  10. 计算机管理员解除阻止程序方法,电脑安装软件时弹出系统管理员设置了系统策略,禁止进行此安装解决方法...