×
单片机 > 单片机程序设计 > 详情

STM32开发笔记33:解决USB CDC “该设备无法启动”问题

发布时间:2020-06-05 发布时间:
|

单片机型号:STM32F401


    调试STM32的USB CDC设备已经有好多次了,可以看一下前面写的日志,针对不同的STM32 MCU都进行了调试。原本以为STM32F4会很简单,可处处是坑,已经调到半夜才解决问题,把问题重新梳理。


    我现在使用的芯片时STM32F401,在STM32CubeMX中,按照以下步骤设置。


    1、设置为全速从设备,不做USB电源检测。



    2、使能CDC,其它采用默认设置。



    按照上述设置生成的程序,下载到芯片后,接入计算机,默认是这样的



    仔细查看细节问题是这样的



    找了好久不能解决问题,网上有一种说法是,是更改usbd_conf.h文件,如下图所示,将USBD_MAX_NUM_CONFIGURATION设置为2,采用这种方法后,计算机可以正常认出该设备,但不能完成通讯操作。



    实在没有方法了,试着调整堆栈数值,偶然解决,我现在调整的数值如下,该数值在startup_stm32f401xc.s文件中。



    现在已经可以正常通信了,如下图。



    主逻辑代码如下:


int main(void)

{

uint8_t data[10] = {0,1,2,3,4,5,6,7,8,9};

 

  MX_ADC1_Init();

  MX_SPI1_Init();

  MX_USB_DEVICE_Init();

 

  while (1)

  {

if (Target.IsbMilliSecond_1000() == TRUE)

{

//¹¤×÷ָʾµÆ

Target.HAL.LED.Turn();

CDC_Transmit_FS(data, 10);

}

  }

}

    这种调整方法,难度过大了,STM32CubeMX需改进一下。


关键字:STM32  USB  CDC  无法启动 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic468066.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ATtiny13 复位与中断处理