02.07.2012
ZL31ARM: sterowanie kulki i obroty bryły w 3D za pomocą czujnika MEMS LIS35
Funkcje pomocne
Poniżej przedstawiono kody niektórych funkcji wykorzystywanych w programie:
//Funkcja pozwalajaca ustawic kontrast za pomoca przyciskow UP i DOWN //Zatwierdzenie ustawienia za pomoca przycisku OK void adjustContrast(){ signed char contrast=0; //Ustawienie kontrastu (przyciski UP i DOWN), potwierdzenie (przycisk OK) while(GPIO_ReadInputDataBit(JOY_PORT_OK, JOY_OK) == 1){ Delay(0xFFFF); if(GPIO_ReadInputDataBit(JOY_PORT, JOY_UP) == 0) SetContrast(contrast == 63 ? contrast : ++contrast); else if(GPIO_ReadInputDataBit(JOY_PORT, JOY_DOWN) == 0) SetContrast(contrast == -64 ? contrast : --contrast); } } //Funkcja konwertujaca liczbe 7-bitowa (od -128 do 127) ze znakiem na ciag typu String void sChar2Str(char *pStr, signed char value){ //Ilosc rozrzadow konwertowanej liczby (bez uwzgledniania znaku) unsigned char charCount=3; //Jezeli wartosc jest ujemna to zapisz znak '-' if(value < 0) *pStr = '-'; else *pStr = ' '; //Ustaw wskaznik na adres komorki zawierajacej najmlodszy rozrzad liczby pStr = pStr + charCount; //Konwertuj liczbe; jednosci, dziesiatki, setki do{ *pStr-- = abs(value % 10) + '0'; value /= 10; } while(--charCount); } //Funkcja ustawiajaca kolor kulki //Wykorzystywana w przerywaniu void setBallColor(unsigned int ballColor){ ball_color = ballColor; }
W pliku main.h zapisane są następujące dane:
#include "lis35.h" #include "stm32f10x.h" void adjustContrast(); void Delay(__IO uint32_t nCount); void sChar2Str(char *, signed char); void indicator(void); void ball(void); void rotatingFigure(void); void setBallColor(unsigned int); signed char x, y, z, xKor=0, yKor=0, zKor=0; static char tempCHAR[4]; volatile static unsigned int ball_color = 0xFFF;