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
    }
}