Close

Getting To Blinky

A project log for Electronic Load 3.3V-16V 1A

Electronic load that supports 3.3V-16V at 1A of current. Equipped with keypad, LCD, rotary encoder, STM32 Microcontroller and more!

schwarzrmsuschwarzrmsu 12/12/2019 at 01:230 Comments

Now that I have connected successfully to the microcontroller, the logical next step is to blink an LED.  I simply plan to test the functionality of the Debug RGB LED by writing some code to turn on and off each element of the RGB LED:

Microcontroller Pins:

Debug RGB LED:

I wrote functions for each LED for Turn On and Turn Off.  I included Red, Green, Blue and all other color combinations.  This will make it easier to toggle these LED's once the code gets more complicated:

void TurnOnRedLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
    return;
}

void TurnOffRedLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
    return;
}

void TurnOnGreenLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET);
    return;
}

void TurnOffGreenLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET);
    return;
}

void TurnOnBlueLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
    return;
}

void TurnOffBlueLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
    return;
}

void TurnOnYellowLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET);
    return;
}

void TurnOffYellowLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET);
    return;
}

void TurnOnPurpleLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
    return;
}

void TurnOffPurpleLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
    return;
}

void TurnOnCyanLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
    return;
}

void TurnOffCyanLED(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
    return;
}

 I added some simple code in the main while loops to test each function:

  while (1)
  {
      TurnOnRedLED();
      HAL_Delay(1000);
      TurnOffRedLED();
      HAL_Delay(1000);

      TurnOnGreenLED();
      HAL_Delay(1000);
      TurnOffGreenLED();
      HAL_Delay(1000);

      TurnOnBlueLED();
      HAL_Delay(1000);
      TurnOffBlueLED();
      HAL_Delay(1000);

      TurnOnYellowLED();
      HAL_Delay(1000);
      TurnOffYellowLED();
      HAL_Delay(1000);

      TurnOnPurpleLED();
      HAL_Delay(1000);
      TurnOffPurpleLED();
      HAL_Delay(1000);

      TurnOnCyanLED();
      HAL_Delay(1000);
      TurnOffCyanLED();
      HAL_Delay(1000);
  }

I then compiled and loaded this code to the micro and tested the SW:

Red:

Green:

Blue:

Yellow:

Purple:

Cyan:

Discussions