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

    调试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需改进一下。


原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346  

猜你喜欢

转载自blog.csdn.net/qingwufeiyang12346/article/details/81039819