LED am STM32F4-Discovery-Board ansteuern

CoIDE von CooCox

In diesem einführenden Beispiel wird ein neues Projekt erstellt und eine LED am Discovery-Board eingeschalten.

Nachdem Sie die Entwicklungsumgebung CoIDE von CooCox gestartet haben erstellen Sie ein neues Projekt.

CooCox CoIDE

 

Geben Sie nun dem Projekt einen Namen z.B. LED1 und stellen einen Speicherort für die Projektdateien ein.

LED-workspace

 

Chip oder Board?

Anschließend wählen Sie Chip.

CoIDE Chip

 

Auswahl des Controllertyps

Wählen Sie hier den passenden Controllertyp ( hier STM32F407VG von ST ) aus.

Controllertyp Auswahlfenster

 

Peripherie GPIO

Im nächsten Schritt wird die benötigte Peripherie GPIO ausgewählt. Über die GPIO werden später die Portpins für unsere LEDs angesteuert.

Die dafür benötigten weiteren Komponenten wie:

  • RCC
  • CMSIS BOOT
  • M4 CMSIS Core

werden automatisch ausgewählt, nachdem bei GPIO das Häckchen gesetzt wurde.

Basiskomponenten CoIDE

 

Datei- und Ordnerstruktur

Die entsprechende Datei- und Ordnerstruktur wird automatisch im Projektverzeichnis angelegt.

Projektverzeichnis CoIDE

 

Code-Grundgerüst

Klicken Sie nun im Projektordner auf die Datei main.c
Anfangs ist hier nur das Code-Grundgerüst hinterlegt:

int main(void)
{

    while(1)
    {
    }
}

 

Test der LED auf dem Board 

Fügen Sie nun den folgenden Code in Ihr Projekt ein und testen Sie, ob die blaue und grüne LED auf dem Discovery-Board leuchtet.

#include <stm32f4xx_gpio.h> // This file contains all the functions prototypes for the GPIO firmware library
#include <stm32f4xx_rcc.h>  // This file contains all the functions prototypes for the RCC firmware library

GPIO_InitTypeDef GPIO;  	// GPIO Init Structure

int main(void)
{
	SystemInit();  // Initialisierung Taktquelle, PLL-Faktor usw.

	/* Enables the AHB1 peripheral clock on GPIOD */
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

	/* Configure the pins */
	GPIO.GPIO_Mode = GPIO_Mode_OUT; 			// Pins auf Ausgang
	GPIO.GPIO_OType = GPIO_OType_PP;			// Ausgang = push-pull
	GPIO.GPIO_Speed = GPIO_Speed_100MHz;		// Max. Frequenz des Ausgangssignals
	GPIO.GPIO_PuPd = GPIO_PuPd_NOPULL;			// Kein Pullup/down
	GPIO.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_15;  // Konfiguriere Pin 12 (grüne LED) und Pin 15 (blaue LED)

	GPIO_Init(GPIOD, &GPIO);					// Init PORT D

	GPIO_SetBits(GPIOD, GPIO_Pin_12 | GPIO_Pin_15);	// Pin12 und Pin15 auf High

    while(1)
    {

    }
}

 

Erklärungen zum Code:

In Zeile 1 und 2 werden mittels #include die beiden Headerdateien stm32f4xx_gpio.h und stm32f4xx_rcc.h eingefügt.

  • stm32f4xx_gpio.h beinhaltet alle Funktionsprototypen der GPIO Library.
  • stm32f4xx_rcc.h 

 

Das GPIO PORT D hängt am AHB1-Bus.

--> Bild