Bluetoothowy moduł BTM222 i STM32

Na listingu 1 przedstawiono fragment głównego programu. Na początku jest wykonywana inicjalizacja wykorzystywanych modułów peryferyjnych mikrokontrolera, następnie jest konfigurowany moduł Bluetooth (nazwa oraz kod PIN), natomiast w nieskończonej pętli są obsługiwane komunikaty odbierane z terminala.

List. 1

Wprowadzenie zmian nazwy i kodu PIN jest realizowane przy użyciu odpowiednich komend AT. Po każdym wprowadzeniu polecenia program oczekuje na komunikat zwrotny, który kończy się dwoma znakami: powrotem karetki oraz znakiem nowej linii. Po wprowadzeniu zmian układ jest zerowany poprzez chwilowe wystawieni stanu niskiego na pin nRES modułu (odpowiada za to funkcja Reset_BTM222()).
Uwagę należy zwrócić także na funkcję inicjalizującą Configuration_BTM222(void), jest ona odpowiedzialna za skonfigurowanie transmisji pomiędzy mikrokontrolerem a modułem Bluetooth przy użyciu transmisji szeregowej UART. Funkcja ta została przedstawiony na listingu 2.

List. 2

Na listingu 3 pokazano funkcję odpowiedzialną za wystawianie danych do wysłania. Funkcja ta kopiuje dane z podanego ciągu do bufora, a następnie włącza obsługę przerwania odpowiedzialnego za transmisję danych. Dodatkowo zaimplementowano element zabezpieczający przed zapisem danych do bufora, w przypadku gdy poprzednia transmisja nie została ukończona. Należy zwrócić uwagę na zmienną TxLength – określa ona długość ciągu do wysłania i zarazem jest zmienną informującą czy aktualnie trwa wysyłanie danych (wartość większa od zera). W przypadku zakończenia transmisji zmienna ta jest zerowana.

List. 3

Realizacja procesu wysyłania i odbierania danych jest realizowana przy wykorzystaniu przerwań. Na listingu 4 przedstawiono funkcję obsługi przerwań pochodzących od flagi odebrania znaku oraz zakończenia wysyłania znaku. W przypadku odebrania znaku następuje jego przepisanie do odpowiedniego bufora, fragment ten ma zabezpieczenie przed przekroczeniem zakresu tablicy w postaci kodu sprawdzającego aktualną wartość licznika. W przypadku fragmentu odpowiedzialnego za wysyłanie ciągu znaków, wykorzystywany jest licznik wskazujący na element tablicy, który jest inkrementowany po każdym wysłaniu znaku. W momencie osiągnięcia przez licznik wartości równej długości ciągu znaków, następuje zerowanie zmiennych TxCounter i TxLength.

Do pobrania

O autorze