Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
po dotkliwej awarii naszego forum
Pogodnego czasu po Bożym Narodzeniu,
Dosiego Nowego Roku
oraz Radosnych Trzech Króli

Życzy Zespół Home Made

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
STM32 USB/CDC
#17
No to ja podam gotowe rozwiązanie Rolleyes
Nie jest ono takie trywialne, bo trochę czasu na to zmarnowałem, ale działa tak, jak powinno. U mnie na STM32F103C8, ale proszę o potwierdzenie, czy u Was też.

Zmiany trzeba zrobić w dwóch plikach HAL dla USB - tych generowanych automatycznie przez CubeMX - oczywiście zmiany wprowadzamy tylko w sekcjach "USER...", a więc pozostaną nawet po zmianie konfiguracji sprzętu.

Zmienione pliki dostępne są TUTAJ (nie działa dodawanie pliku przy odpowiedzi na sp-hm), a poniżej lista numerów linii, które zostały dodane:

usbd_cdc_if.c:
107-108, 135-138, 166, 235, 239-246, 250

usbd_cdc_if.h:
118

Po takich zmianach wystarczy użyć funkcji "USBD_CDC_IsPortOpen()".
Zwróci ona 0 jeśli wystąpiło którekolwiek ze zdarzeń:
- nie włożono wtyczki USB do PC;
- włożono wtyczkę USB, ale nie otwarto portu;
- włożono wtyczkę USB, otwarto port, a następnie wyciągnięto wtyczkę (zerwane połączenie);
- zamknięto wcześniej otwarty port;
Funkcja zwróci 1 tylko jeśli mamy prawidłowe połączenie i port jest otwarty.

Całość rozpracowywałem mając włączony USB w przykładowym projekcie oraz jednocześnie robiąc "debug" na konsoli podpiętej po BT na USART2.
Próbowałem wszelkich (tak mi się wydaje) kombinacji z otwieraniem/zamykaniem portu i wkładaniem/wyciąganiem wtyczki USB, więc powinno być OK.
Jeśli ktoś zauważy problem, to proszę o raport Smile

Pozdrawiam,
Rafał SP3GO
Odpowiedz


Wiadomości w tym wątku
STM32 USB/CDC - przez SP9RQA - 06-04-2017, 20:14

Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości