首页 > 解决方案 > 代码卡在 MX_USB_DEVICE_Init(); 并在连接到 USB comm 的另一端时得到修复

问题描述

我使用 STM32F103C8Tx,但 USB 通信无法按预期工作。有时代码卡在 MX_USB_DEVICE_Init(); 功能..更特别的是它卡​​在

USBx->BTABLE = BTABLE_ADDRESS;

MX_USB_DEVICE_Init() 内的行;

当我连接 USB 通信的另一端时,它得到修复。

这背后的原因可能是什么?所以我需要连接USB设备,还是会卡在MX_USB_DEVICE_Init();功能?

注:与中断优先级无关。编辑:因为整个代码太长了。这是卡住的部分:(我使用FREERTOS。)

void StartDefaultTask(void const * argument)
{

    /* init code for USB_DEVICE */
    MX_USB_DEVICE_Init();

    /* USER CODE BEGIN 5 */
    //Set all variables to zero at the beginning
    int dischargeSOCLevel;
    socBattery1 = -1;
    socBattery2 = -1;
    dc1_done=0;
    dc2_done=0;
    started =0;
    dc1_count=0;
    dc2_count=0;
    previous_time=0;
    pre_error=0;
    error=0;
    derivative=0;
    //integral=0;
    temperatureBank2=0;
    temperatureBank1=0;
    realise=0;
    avarage_current=0;
    avarage_counter=0;
    I2C_transmit_fail_count=0;
    I2C_receive_fail_count=0;
     currentDischargerState=DS_INITIALIZING;
    osDelay(13000);
...

这是 USB 的 CubeMX 设置:

CubeMX 一般视图

CubeMX USB 窗口

CUbeMX USB_Device 窗口

当我调试时,代码卡在这一行:

  /*Set Btable Address*/
  USBx->BTABLE = BTABLE_ADDRESS;

我知道这个问题太笼统了,但我真的不知道问题出在哪里,或者我应该在哪里更深入地解释。所以如果还有什么问题,请追问。

标签: usbstm32

解决方案


推荐阅读