ARM Procesor
Get the Flash Player to see this player.
Pierwszy program STM32 |
Naukę każdego mikroprocesora należy zacząć od wystawiania napięcia na określoną nóżkę oraz odczytania stanu danego pinu. Następnie należy nauczyć się obsługi timerów, interfejsów i dodatkowych urządzeń takich jak przetwornik ADC i termometr wewnętrzny. Dopiero po takim przygotowaniu możemy zacząć zabawę z mikroprocesorem.W Atolic TrueStudio sprawa jest ułatwiona, ponieważ wszystkie biblioteki dostarczone są razem ze środowiskiem. Po pierwszym uruchomieniu dostajemy cały pakiet dostępnych bibliotek. Wystarczy tylko wybrać interesujący nas procesor i programator. Do obsługi portów wejścia/wyjścia służy rejestr GPIO. Obsługa tego rejestru różni się od procesorów z rodziny AVR, ale nie aż tak bardzo. W STM32 można na bieżąco odczytywać stan portu nawet jeśli jest on ustawiony jako wyjście. Drugą różnicą jest prędkość odczytu z portu. Jest to czas po którym możemy znowu odczytać wartość portu. A trzecią najbardziej istotną różnicą jest to, że wszystkie urządzenia w STM32 standardowo są wyłączone i trzeba je włączyć. W AVR wszystko było już załączone. Nie będę się tu długo rozpisywał ponieważ znalazłem artykuł dotyczący Timerów i GPIO na forbocie, dlatego podsyłam link oraz skorzystam z ich przykładu :) : http://www.forbot.pl/forum/topics49/kurs-stm32-czesc-2-pierwszy-projekt-vt5905.htm Za konfigurację GPIO w naszym kodzie odpowiedzialna jest poniższa funkcja: W pierwszej linijce deklarujemy strukturę. W drugiej załączamy port GPIOE do którego przyczepione są diody i buzzer. W czwartej linijce deklarujemy piny do których ta struktura się tyczy. W piątej linijce ustalamy kierunek portu, pull-down, pull-up itp. W szóstej linijce podajemy szybkość portu. Dla przykładu jeśli chcemy oprogramować przycisk, to możemy użyć GPIO_Mode_IPU (załączony wewnętrzny pull up), GPIO_Mode_IPD (załączony wewnętrzny pull down) lub GPIO_Mode_IN_FLOATING (stan wysokiej impedancji, czyli trzeba podciągnąć ten przycisk zewnętrznym pull-up'em lub pull-down'em). Dla Wejścia analogowego należy wybrać opcję GPIO_Mode_AIN, a dla diodek GPIO_Mode_Out_OD lub GPIO_Mode_Out_PP. Zapewne jesteście ciekawi skąd wiedziałem, że wpisanie GPIO_Mode_Out_PP spowoduje ustawienie pull-up oraz jakie dostępne są opcje dla danego procesora. Odpowiedź jest prosta należy otworzyć katalog Libraries->STM32F10x_StdPeriph_Driver->stm32f10x_gpio.h tak jak na obrazku poniżej W bibliotekach stworzonych przez Atolic mamy dostępne biblioteki co widać po lewej stronie. Programista musi tylko nauczyć się korzystać z tych bibliotek. Jest to duże ułatwienie dla hobbystów takich jak ja. Poniżej prezentuje kod całego pliku main.c pobrany z forbot'a, który uruchamia i gasi na zmianę diodę 1 i 2 oraz buzzer. Aby wgrać nasz program wystarczy podłączyć naszego JTAG'a i wcisnąć znaczek zielonego robaka. Pojawi się nam konfiguracja debugera w której wystarczy zmienić nasz programator i wybrać program, który ma być debugowany. Gdy otworzy się nam okno z programem wciskamy zielony przycisk play, a program sam wgra się do procesora: Gdy naciśniemy czerwony kwadrat, wyjdziemy z trybu debugowania i wrócimy do programu. Oczywiście tryb debugowania umożliwia nam podglądanie programu w czasie rzeczywistym i wychwytywanie błędów na bieżąco, ale mi wystarcza wgrywanie programu. |