Я использую STM32F103C8Tx, но USB-соединение не работает должным образом. Иногда код застревает в MX_USB_DEVICE_Init (); функция .. Более конкретно, он застревает в
USBx-> BTABLE = BTABLE_ADDRESS;
строка внутри MX_USB_DEVICE_Init ();
Когда я подключаю другую сторону USB-соединения , это будет исправлено.
В чем может быть причина? Так что мне нужно подключить USB-устройство, или оно застрянет в MX_USB_DEVICE_Init (); function?
Примечание: не имеет отношения к приоритету прерывания. Изменить: поскольку весь код слишком длинный. Вот часть, где он застревает: (я использую 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);
...
Вот настройки CubeMX для USB:
Когда я отлаживаю, код застревает в этой строке:
/*Set Btable Address*/
USBx->BTABLE = BTABLE_ADDRESS;
Я знаю, что этот вопрос слишком общий, но я действительно не знаю, в чем проблема и где мне следует более подробно объяснить. Так что, если есть еще вопросы, задавайте.