Witam,
Z braku Discovery F4 zrobiłem test na discovery F429.
Ma on 2 porty USB - HS oraz FS. Port FS jest zajęty przez jakieś peryferium na PCB, ale dostępny jest port HS, który jest wyprowadzony na złącze mikroUSB - dla użytkownika.
W związku, że użyłem portu USB HS, a nie FS jak u Ciebie, nazwa struktury jest hUsbDeviceHS a nie hUsbDeviceFS oraz funkcja wysyłająca przez USB to CDC_Transmit_HS a nie CDC_Transmit_FS.
Konfiguracja wygenerowana najnowszym stm32CubeMX.
Nie zauważyłem żadnych problemów, na które Ty napotkałeś.
Kod testowy:
A tu jest link do filmiku prezentujący prawidłową pracę, bez względu, czy USB jest podpięte czy odpięte.
Program nie zatrzymuje się na CDC_Transmit_HS(bufor, rozmiar) , gdy USB jest odpięte/nieaktywne. W takim wypadku sprawdzanie, czy port na komputerze jest otwarty/zamknięty nie jest potrzebne.
I widok konsoli terminala:
Z braku Discovery F4 zrobiłem test na discovery F429.
Ma on 2 porty USB - HS oraz FS. Port FS jest zajęty przez jakieś peryferium na PCB, ale dostępny jest port HS, który jest wyprowadzony na złącze mikroUSB - dla użytkownika.
W związku, że użyłem portu USB HS, a nie FS jak u Ciebie, nazwa struktury jest hUsbDeviceHS a nie hUsbDeviceFS oraz funkcja wysyłająca przez USB to CDC_Transmit_HS a nie CDC_Transmit_FS.
Konfiguracja wygenerowana najnowszym stm32CubeMX.
Nie zauważyłem żadnych problemów, na które Ty napotkałeś.
Kod testowy:
Kod:
char bufor[128];
uint8_t licznik, rozmiar;
while (1)
{
sprintf(bufor, " id: %u \r\n dev_state: %u \r\n ep0_state: %lu \r\n dev_address: %u ",
hUsbDeviceHS.id, hUsbDeviceHS.dev_state, hUsbDeviceHS.ep0_state, hUsbDeviceHS.dev_address);
ILI9341_Print_String(0, 0,RED, bufor);
if (hUsbDeviceHS.dev_state == USBD_STATE_CONFIGURED)
{
ILI9341_Print_String(0, 80, BLUE, " USB PODPIETE !!");
} else
{
ILI9341_Print_String(0, 80, BLUE, " USB NIEAKTYWNE !!!");
}
rozmiar = sprintf(bufor, " Wiadomosc numer: %u \r\n", licznik);
CDC_Transmit_HS(bufor, rozmiar);
ILI9341_Print_String(0, 100, GREEN, bufor);
licznik++;
}A tu jest link do filmiku prezentujący prawidłową pracę, bez względu, czy USB jest podpięte czy odpięte.
Program nie zatrzymuje się na CDC_Transmit_HS(bufor, rozmiar) , gdy USB jest odpięte/nieaktywne. W takim wypadku sprawdzanie, czy port na komputerze jest otwarty/zamknięty nie jest potrzebne.
I widok konsoli terminala:
73 Paweł

