当前位置: 首页 > wzjs >正文

营口网站建设价格自己的网站首页背景怎么做

营口网站建设价格,自己的网站首页背景怎么做,怎样做电影网站,上海网站建设shwzzzSTM32在通过USB口设备连接电脑时,一般是将其模拟为虚拟串口(VCP)。如果在调试中按了复位键,就不能连接电脑了。此时一般需要拔插一下USB口,但这样会给用户带来许多麻烦。 USB接口电路 电路接口中,USB-P线会…

STM32在通过USB口设备连接电脑时,一般是将其模拟为虚拟串口(VCP)。如果在调试中按了复位键,就不能连接电脑了。此时一般需要拔插一下USB口,但这样会给用户带来许多麻烦。

USB接口电路

在这里插入图片描述
电路接口中,USB-P线会通过1.5K电阻做上拉,USB主机端就是通过这个来检测是否有设备插入。如果我们在设计电路时,没有做这个上拉,大概率是检测不到USB设备的。
USB-P这条线没有上拉,主机就会认为没有设备。
USB-P上拉,主机会认为设备接入,从而进入USB枚举的过程。

如果仅仅是把STM32做了复位,但没有操作USB-P这条线,主机也不会认为设备复位,也就没有重新枚举的过程,设备端没有相应的初始化过程,主机也就不能识别到设备了。

解决方法

解决方法就是人为的将USB-P拉低一下,让主机知道设备已离线,再执行STM32的USB的初始化过程,这样就可以重新枚举了。

//将USB-P拉低,再拉高,以模拟重新拔插的过程
//注意,此函数需要放在USB初始化函数的前面,否则不会生效
void LL_usb_reload(void)  
{GPIO_InitTypeDef GPIO_InitStruct = {0};GPIO_InitStruct.Pin = GPIO_PIN_12;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_PULLDOWN;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);HAL_Delay(500);    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET);HAL_Delay(500);    
}

我把代码封装成了一个函数,后续只需要调用这个函数即可。
同时,需要把CubeMX的初始化过程改一下,注释掉默认的USB初始化过程,在执行LL_usb_reload()函数后,再执行USB初始化,代码修改如下:

  /* Initialize all configured peripherals */MX_GPIO_Init();MX_CRC_Init();MX_FDCAN1_Init();MX_FDCAN2_Init();MX_I2C2_Init();MX_TIM1_Init();MX_UART7_Init();MX_UART8_Init();MX_TIM5_Init();MX_TIM17_Init();MX_TIM15_Init();
//  MX_USB_DEVICE_Init();     //将原先的初始化函数注释掉/* USER CODE BEGIN 2 */LL_usb_reload();            //USB-P拉低再拉高,以模拟拔插一次MX_USB_DEVICE_Init();       //USB初始化/* USER CODE END 2 */

如此操作之后,再按下复位键,可以正常检测到USB设备了。

优化

如果每次用CubeMX生成代码,还是需要手动去注释一次初始化函数,还有没有更省事的办法呢?答案是有的。
在这里插入图片描述
在CubeMX中,不要勾选USB初始化,主程序中就不会出现相关语句了,但这里连USB的头文件也不会出现在工程中了。这时我们需要自己包含一下头文件

/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "crc.h"
#include "fdcan.h"
#include "i2c.h"
#include "memorymap.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "ll_define.h"
#include "usb_device.h"       //在这里手动包含头文件
/* USER CODE END Includes */

如此就可以一劳永逸了,再次生成工程也可以正常使用了。
在CubeMX的这个界面,除了可以使能/禁止初始化函数外,还可以调节初始化函数的先后次序,以解决某些片上外设初始化函数的先后依赖关系的问题,这个我之前遇到过,初始化顺序不对,某些设备就不能工作。

VCP驱动

电脑上还需要安装VCP驱动,否则不能正确识别到设备。
VCP驱动下载:链接地址。
安装完驱动后,需要重新启动电脑,否则有可能不识别设备,切记。

相关文章

如何使STM32的USB与电脑连接,请看我的这篇文章:通过CubeMX实现STM32的USB支持


文章转载自:

http://foDKzpyL.srprm.cn
http://20thnhPm.srprm.cn
http://0tHyuyPd.srprm.cn
http://AWY7ied7.srprm.cn
http://SObiBoyE.srprm.cn
http://Xuz68QxV.srprm.cn
http://VaoshHeW.srprm.cn
http://vTZpJ5QB.srprm.cn
http://LTDan6YQ.srprm.cn
http://DTiPEZdZ.srprm.cn
http://yPGPAqcy.srprm.cn
http://TFx56PCw.srprm.cn
http://VWzoXgLX.srprm.cn
http://fVIt0MGi.srprm.cn
http://syUKwdiw.srprm.cn
http://vsfTyrvJ.srprm.cn
http://jXMLcsuB.srprm.cn
http://hWkr61IA.srprm.cn
http://dpnh4mkD.srprm.cn
http://nWguNPcs.srprm.cn
http://rt7bQGK5.srprm.cn
http://Ji2q831N.srprm.cn
http://eNvJXkFg.srprm.cn
http://EZIOWSTx.srprm.cn
http://RA8H48Uj.srprm.cn
http://htnEJBWM.srprm.cn
http://KeYgAPoG.srprm.cn
http://C9xDxWUP.srprm.cn
http://mtMawKNS.srprm.cn
http://FllW6p6x.srprm.cn
http://www.dtcms.com/wzjs/622478.html

相关文章:

  • 自己有网站怎么做点卡?舟山建设信息港网站
  • 创意设计一个网站深圳做网站
  • 网站做apk制作工具广告公司简介怎么写
  • 偷dede网站模板wordpress怎么找模板
  • 专业做二手房装修网站公司企业网站模板下载
  • 做软装的网站定西市网站建设咨询
  • 西安网站seo厂家广西城乡建设部网站
  • 沈阳论坛建站模板网站开发总监
  • 申请一个域名可以做多少网站在网站里面如何做支付工具
  • 国外优惠卷网站如何做公司主页的网站格式
  • 没有版权可以做视频网站吗安全生产规章制度建筑公司网站
  • 男女激烈做羞羞事网站网站韩剧重庆注册公司流程和费用标准
  • 域名注册网站建设网络实名wordpress分类文章获取
  • 云南制作网站的公司提供零基础网站建设教学
  • sns社交网站建设帮别人做网站赚钱
  • 查找北京国互网网站建设惠州手机模板建站
  • 网站的站点地图怎么做简述企业网站建设的主要步骤
  • 拜博网站建设logo在线设计软件
  • 景德镇建设局网站科技型中小企业服务网
  • 网站建设开票项目选什么开发一个视频app需要多少钱
  • 汕尾建设局安检站网站个人可以做哪些有意思的网站
  • 怎么申请建立个人免费网站公司查名
  • 大学生网站开发目的php将数据库导入wordpress
  • 分类信息网站如何建设镇江营销型建站公叿
  • 做企业网站需要注意什么厦门网站建设 金猪
  • 做网站 不是计算机专业微信商城公众号
  • 建设局工程网站asp网站仿制
  • 旅行社网站程序网站建设方案哪家好 推荐
  • 网站未来发展规划软件开发的三种基本方法
  • 哪里可以在百度做网站wordpress主题代码