LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

CooCox CoIDE i STM32F4Discovery – jak zacząć?

Do obsługi diody LED wystarczy wybrać tylko jeden komponent standardowej biblioteki obsługi peryferii – komponent GPIO, a zaraz potem pojawi się okienko dialogowe z pytaniem czy utworzyć nowy projekt, gdyż w zakładce Project okna głównego brak jest jakiegokolwiek projektu i należy tutaj wybrać „Tak” (rysunek 7). W kolejnym okienku (rysunek 8) wystarczy podać nazwę projektu oraz ewentualną inną lokalizację (wtedy należy odznaczyć pole Use default location i podać katalog roboczy projektu) i kliknąć Finish. Można teraz zauważyć, że program automatycznie wybrał wszystkie te komponenty z których korzysta element GPIO (występują tutaj powiązania) oraz przygotował gotową strukturę projektu w zakładce Project okna głównego (rysunek 9).

 

Rys. 6. Lista dostępnych komponentów

Rys. 6. Lista dostępnych komponentów

 

 

Rys. 7. Pytanie o utworzenie nowego projektu

Rys. 7. Pytanie o utworzenie nowego projektu

 

 

Rys. 8. Podanie nazwy i lokalizacji tworzonego projektu

Rys. 8. Podanie nazwy i lokalizacji tworzonego projektu

 

 

Rys. 9. Przykładowa struktura projektu

Rys. 9. Przykładowa struktura projektu

 

 

Rys. 10. Komponenty obsługi zewnętrznych urządzeń

Rys. 10. Komponenty obsługi zewnętrznych urządzeń

 

 

W tym samym kroku oprócz komponentów związanych z obsługą wewnętrznych modułów peryferyjnych mikrokontrolera można również wybierać komponenty obsługi zewnętrznych urządzeń, takie jak pliki obsługi wyświetlacza LCD i czujnika temperatury – patrz zakładki Drivers i Others w dolnej części okna Repository (rysunek 10). Warto dodać, że takie komponenty mogą być dodawane przez zwykłych użytkowników do głównej bazy projektu nawet z poziomu samego oprogramowania. Ponieważ zestaw STM32F4Discovery posiada zewnętrzny oscylator 8MHz za pomocą którego jest taktowany układ to wymagana jest drobna modyfikacja pliku system_stm32f4xx.c, w którym częstotliwość sygnału systemowego jest ustawiona na 168 MHz. Należy znaleźć linijkę:

#define PLL_M    25

i zamienić wartość 25 na 8:

#define PLL_M    8

Plik main.c z pętlą while() został również dodany automatycznie, więc aby przetestować kompilację prostego projektu dodajemy poniższy kod realizujący migotanie dwóch diod LED podłączonych do wyprowadzeń PD12 oraz PD14 i z menu głównego wybieramy: Project -> Build (albo klawisz F7). Jeżeli wszystko zostało wykonane bez błędów to efekt powinien być podobny do przedstawionego na rysunku 11.

#include 
#include 

void Delay(void)
{
	volatile uint32_t i;
	for (i = 0; i != 0xFFFFF; i++);
}

int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

// Wlaczenie sygnalu taktujacego port D
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD , ENABLE);

	GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_12 | GPIO_Pin_14);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
	GPIO_Init(GPIOD, &GPIO_InitStructure);

	// Wyzerowanie wyjscia PD14
	GPIO_ResetBits(GPIOD, GPIO_Pin_14);

	// Ustawienie wyjscia PD12
	GPIO_SetBits(GPIOD, GPIO_Pin_12);

	while(1){
		// Zmiana stanu wyjsc na przeciwny
		GPIO_ToggleBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_14);

		// Czekaj
		Delay();
	}
}

 

Autor: Jan Szemiet