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.

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

Chip oder Board?

Anschließend wählen Sie Chip.

Auswahl des Controllertyps

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

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.

Datei- und Ordnerstruktur

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.

AVR-Mikrocontroller Programmierung in C

ne555.at

avr-programmierung.com

Heimo & Patrick Gaicher