Bluetoothowy moduł BTM222 i STM32

List. 4

Samo dekodowanie przesłanych poleceń jest realizowane w pętli głównej programu. Rozpoczęcie dekodowania wymaga spełnienia warunku:
if((RxBuffer[RxCounter – 1] == '\n’) && (RxBuffer[RxCounter – 2] == '\r’))
informującego o fakcie wciśnięcia klawisza Enter, w wyniku czego są wysyłane dwa znaki: powrót karetki (CR) oraz znak nowej linii (LF). W przypadku wystąpienia powyższego, następuje sprawdzenie czy polecenie pasuje do jednego ze zdefiniowanych. Przykład takiego dekodowania (dla włączenia wskazanej diody LED) przedstawiono na listingu 5. Na początku następuje sprawdzenie ogólnego polecenia (z pominięciem numeru diody LED). W przypadku dopasowania polecenia następuje sprawdzenie znaku numeru diody przy wykorzystaniu polecenia switch. Na samym końcu jest wysłany komunikat o powodzeniu lub błędzie w dekodowaniu polecenia. Analogiczne działania występują w przypadku dekodowania pozostałych poleceń.

List. 5

Wyjątkiem od wystąpienia znaków CR i EOL jest obsługa kodu klawisza Backspace, na listingu 6 przedstawiono obsługę takiego zdarzenia.

List. 6

Wystąpienie znaku Backspace powoduje przesunięcie i wyzerowanie dwóch znaków (aktualnie wpisanego znaku BS oraz poprzedniego), kod realizuje także zabezpieczenie przed przekroczeniem zakresu tabeli.
W projekcie występuje dodatkowy plik macro.h, w którym zdefiniowano działania w celu sterowania diodami LED. Realizowane są one poprzez odpowiednie zapisy poszczególnych bitów do odpowiednich rejestrów. Dla przykładu, w sterowaniu diodą LED numer 1 mamy następujące definicje:

#define LED_1_ON GPIOB->BSRR |= GPIO_BSRR_BS8,

#define LED_1_OFF GPIOB->BSRR |= GPIO_BSRR_BR8,

#define LED_1_INV ((GPIOB->ODR & GPIO_ODR_ODR8)?(LED_1_OFF):(LED_1_ON)).

Pierwsze plecenie powoduje włączenie diody LED, drugie polecenie wyłącza ją, natomiast ostatnie prowadzi do przełączenia stanu diody LED. Analogiczne działania występują przy sterowaniu pozostałymi diodami LED.
Mariusz Dziębowski
m.dziebowski@interia.pl

Odnośniki: Pliki źródłowe projektu przygotowanego w środowisku Atollic TrueStudio dla STM32
Program terminala Hercules
Moduł Bluetooth KAmodBTM222
Zestaw uruchomieniowy ZL27ARM

Do pobrania

O autorze