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-01.png

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

coocox-02.png
Chip oder Board?

Anschließend wählen Sie Chip.

coocox-03.png
Auswahl des Controllertyps

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

coocox-04.png
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.

coocox-05.png
Datei- und Ordnerstruktur
coocox-06.png

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

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ärung 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.