完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有没有人让 USB 在 STM32L552 上作为 VCP 运行?
我们在通过 VCP 将 USB 连接到 PC 的情况下运行系统时遇到问题。我们使用 MXCube 5.6.1 版并使用 USB VCP 创建了一个小项目。VDD-USB Pin接3.3V,系统启动,但PC端检测不到USB。 我们之前将 USB 作为 VCP 在其他几个处理器(STM32F4、STM32F7、STM32H7)上工作,没有任何问题。但是在 L552 上肯定有一些不同的东西在使用相同的固件处理和硬件布局时不起作用。 |
|
相关推荐
1个回答
|
|
我们为任何感兴趣的人提供了一个可行的解决方案:
硬件条件是:
在 CubeMX 配置中执行以下操作:
1) 上电时,在 GPIOS 等初始化完成后,调用以下例程“DoInitUSB”,它为 PVM1(用于 USB)配置 PVM(外设电压监控)中断,如下所示: 无效 DoInitUSB(无效) { static int bInit = TRUE; PWR_PVMTypeDef sConfigPVM; sConfigPVM.PVMType = PWR_PVM_1; sConfigPVM.Mode = PVM_MODE_IT | PVM_RISING_EDGE | PVM_FALLING_EDGE;// 创建电源检测中断 HAL_PWREx_ConfigPVM(&sConfigPVM); //激活周边电压监测 HAL_PWREx_EnablePVM1(); // 激活 USB 电源 HAL_PWREx_EnableVddUSB(); // 等待 2 毫秒 平行延迟(PARA_DELAY_1MS); 平行延迟(PARA_DELAY_1MS); //检查USB插头是否连接: if (READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == 0) // 电源高于 1.2 伏 { HAL_PWREx_EnableVddUSB(); 如果(bInit) { MX_USB_Device_Init(); b初始化=假;// 上电后只做一次 } bPowerIsOn = TRUE; } 别的 { HAL_PWREx_DisableVddUSB(); bPowerIsOn = 假; } } 2) 包括以下回调 fpr PVM 中断: 无效 HAL_PWREx_PVM1Callback() { if (READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == 0) // 电源高于 1.2 伏 { HAL_PWREx_EnableVddUSB(); 如果(bInit) { MX_USB_Device_Init(); b初始化=假; } bPowerIsOn = TRUE; } else // 电源低于 1.2 伏 { HAL_PWREx_DisableVddUSB(); bPowerIsOn = 假; } } 我希望这个设置可以帮助其他人! |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2634 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3609 浏览 6 评论
5987 浏览 21 评论
939浏览 4评论
1315浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
582浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1302浏览 3评论
1357浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 10:12 , Processed in 1.202173 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号