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

    }

}

AVR-Mikrocontroller Programmierung in C

ne555.at

avr-programmierung.com

Heimo & Patrick Gaicher