STM32F0Discovery: jak zacząć
Aby zobaczyć efekt działania aplikacji należy podłączyć płytkę STM32F0Discovery do portu USB oraz wejść w tryb debugowania (rysunek 7) i uruchomić wykonywanie programu (rysunek 8). Aby zatrzymać wykonywanie się programu należy wcisnąć przycisk po prawej stronie obok przycisku Start, a przycisk po lewej stronie zeruje układ.
Rys. 7. Ikona wejścia w tryb Debug
Rys. 8. Ikona inicjująca uruchomienie programu
Przykładowa aplikacja
Elementy jakie znajdują się na płytce zestawu i jakie zostaną wykorzystane w prostej aplikacji to (fotografia 9):
- zielona dioda LD3 podłączona do wyprowadzenia mikrokontrolera PC9,
- niebieska dioda LD4 podłączona do wyprowadzenia mikrokontrolera PC8,
- przycisk USER podłączony do wyprowadzenia mikrokontrolera PA0.
Fot. 9. Rozmieszczenie na płytce STM32F0Discovery elementów wykorzystanych w przykładowym projekcie
Według schematu elektrycznego (rysunek 10) aby włączyć LED należy podać logiczną jedynkę na wyprowadzenie GPIO (skonfigurowane jako wyjście), do którego jest ona podłączona, natomiast aby ją zgasić należy podać na tę linię logiczne zero. Przycisk USER jest podłączony do linii PA0, a pomiędzy nim, a ujemnym biegunem źródła zasilania znajduje się rezystor. Jest to więc układ typu pull-down, dlatego stan niski odczytany na wejściu linii PA0 oznacza, że przycisk nie jest wciśnięty.
Rys. 10. Schemat podłączenia LED i przycisku do linii GPIO mikrokontrolera
Funkcje pomocnicze zdefiniowane w pliku stm32f0_discovery.c
Plik stm32f0_discovery.h zawiera kilka definicji stałych wykorzystywanych w programie:
typedef enum { LED3 = 0, LED4 = 1 } Led_TypeDef; typedef enum { BUTTON_USER = 0 } Button_TypeDef; typedef enum { BUTTON_MODE_GPIO = 0, BUTTON_MODE_EXTI = 1 } ButtonMode_TypeDef; #define LEDn 2 #define LED3_PIN GPIO_Pin_9 #define LED3_GPIO_PORT GPIOC #define LED3_GPIO_CLK RCC_AHBPeriph_GPIOC #define LED4_PIN GPIO_Pin_8 #define LED4_GPIO_PORT GPIOC #define LED4_GPIO_CLK RCC_AHBPeriph_GPIOC #define BUTTONn 1 #define USER_BUTTON_PIN GPIO_Pin_0 #define USER_BUTTON_GPIO_PORT GPIOA #define USER_BUTTON_GPIO_CLK RCC_AHBPeriph_GPIOA #define USER_BUTTON_EXTI_LINE EXTI_Line0 #define USER_BUTTON_EXTI_PORT_SOURCE EXTI_PortSourceGPIOA #define USER_BUTTON_EXTI_PIN_SOURCE EXTI_PinSource0 #define USER_BUTTON_EXTI_IRQn EXTI0_1_IRQn