STM32F4-Discovery
STM32F407 DISCOVERY-BOARD
LED einschalten
In diesem Beispiel wird die orange LED am STM32F407 Discovery-Board eingeschalten.
Die Register des Mikrocontrollers werden hier direkt wie im folgenden Beispiel angesprochen:
/* The file stm32f4xx.h contains all the peripheral register's definitions, bits definitions * and memory mapping for STM32F4xx devices */ #include "stm32f4xx.h" int main(void) { /* mit dem Dereferenzierungsoperator -> wird auf die Member der jeweiligen Struktur zugegriffen */ RCC -> AHB1ENR |= (1<<3); // Enable CLK for PortD in peripheral clock register (RCC_AHB1ENR) GPIOD -> MODER |= (1<<26); // Set pin 13 (orange LED)to be general purpose output in GPIO port mode register GPIOD -> ODR |= (1<<13); // Turn GPIOD pin13 (orange LED) ON in GPIO port output data register while(1) { } }
LED ansteuern
LED3, LED4, LED5 und LED6 am Discovery-Board ansteuern:
#include <stm32f4xx.h> int main(void) { /* mit dem Dereferenzierungsoperator -> wird auf die Member der jeweiligen Struktur zugegriffen */ RCC -> AHB1ENR |= (1<<3); // Enable CLK for PortD in peripheral clock register (RCC_AHB1ENR) GPIOD -> MODER |= (1<<26); // Set pin 13 (orange LED)to be general purpose output in GPIO port mode register GPIOD -> ODR |= (1<<13); // Turn GPIOD pin13 (orange LED) ON in GPIO port output data register GPIOD -> MODER |= (1<<24); // Set pin 12 (green LED)to be general purpose output in GPIO port mode register GPIOD -> ODR |= (1<<12); // Turn GPIOD pin12 (green LED) ON in GPIO port output data register GPIOD -> MODER |= (1<<28); // Set pin 14 (red LED)to be general purpose output in GPIO port mode register GPIOD -> ODR |= (1<<14); // Turn GPIOD pin14 (red LED) ON in GPIO port output data register GPIOD -> MODER |= (1<<30); // Set pin 15 (blue LED)to be general purpose output in GPIO port mode register GPIOD -> ODR |= (1<<15); // Turn GPIOD pin15 (blue LED) ON in GPIO port output data register while(1) { } }
LED blinken lassen
Nun wollen wir eine LED blinken lassen. Dazu bauen wir eine for-Schleife für eine Verzögerung ein und schalten den Portpin 13 abwechselnd auf High und Low.
#include "stm32f4xx.h" int main(void) { RCC -> AHB1ENR |= (1<<3); // Enable CLK for PortD in peripheral clock register (RCC_AHB1ENR) GPIOD -> MODER |= (1<<26); // Set pin 13 (orange LED)to be general purpose output in GPIO port mode register int i; while(1) { for (i = 0; i < 1000000; ++i); // Delay GPIOD -> ODR |= (1<<13); // Turn GPIOD pin13 (orange LED) ON for (i = 0; i < 1000000; ++i); // Delay GPIOD -> ODR &= ~(1<<13); // Turn GPIOD pin13 (orange LED) OFF } }