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.