LED ansteuern
LED einschalten
In diesem Beispiel wird die blaue LED am Discovery Board mit dem XOR-Operator getoggelt. In den ersten Programmzeilen wird auch gezeigt, wie der Takt am GPIO port D aktiviert und deaktiviert wird.
Code
/* 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
Code
#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.
Code
#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
}
}