STM32 i czujnik koloru TCS3200
Obsługa przerwania SysTick ogranicza się do cyklicznego przełączania aktualnie wybranego filtru oraz odczytaniu zliczonych impulsów z rejestru licznika. Poniżej przedstawiono fragment kodu, który wykonywany jest w czasie wybrania jednego filtru. Analogiczne działanie realizowane jest przy pozostałych filtrach. Program do przełączania stanu pracy realizowany jest przy wykorzystaniu funkcji case.
void SysTick_Handler(void) { extern uint16_t licznik; extern uint16_t FreqRed; extern uint16_t FreqGreen; extern uint16_t FreqBlue; extern uint16_t FreqClear; switch(licznik) { case 7 : //odczyt wartości licznika FreqGreen = TIM_GetCounter(TIM2); //przypisanie nowej wartości do zmiennej licznik = 0; break; case 6 : //zmiana wybranego filtru światła układu TCS3200D TCS3200_DISABLE; TCS3200_Green; TCS3200_ENABLE; //przypisanie nowej wartości do zmiennej licznik = 7; break; ... } //wyzerowanie licznika TIM_SetCounter(TIM2,0); }
Na początku obsługi przerwania mamy informację na temat wcześniej zadeklarowanych zmiennych, ich deklaracja została wykonana w pliku main.c. Na końcu obsługi przerwania mamy polecenie zerujące licznik TIM2.
Następnie w pętli głównej programu realizowana jest inicjalizacja wyświetlacza oraz wypełnieni go odpowiednią zawartością. Po tym działaniu program przechodzi do nieskończonej pętli, w czasie jej trwania przeprowadzana jest aktualizacja wartości na wyświetlaczu.
Mariusz Dziębowski