#include "stm32l0xx_hal.h"
// LED pin definitions
#define RED_LED_PORT GPIOA
#define RED_LED_PIN GPIO_PIN_11 // D10
#define YELLOW_LED_PORT GPIOB
#define YELLOW_LED_PIN GPIO_PIN_5 // D11
#define GREEN_LED_PORT GPIOB
#define GREEN_LED_PIN GPIO_PIN_4 // D12
void SystemClock_Config(void);
int main(void) {
HAL_Init();
SystemClock_Config();
// Enable clocks for GPIOA and GPIOB
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
// Configure GPIO for all three LEDs
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
// Red LED (D10 - PB6)
GPIO_InitStruct.Pin = RED_LED_PIN;
HAL_GPIO_Init(RED_LED_PORT, &GPIO_InitStruct);
// Yellow LED (D11 - PA7)
GPIO_InitStruct.Pin = YELLOW_LED_PIN;
HAL_GPIO_Init(YELLOW_LED_PORT, &GPIO_InitStruct);
// Green LED (D12 - PA6)
GPIO_InitStruct.Pin = GREEN_LED_PIN;
HAL_GPIO_Init(GREEN_LED_PORT, &GPIO_InitStruct);
while (1) {
// Red ON, Yellow & Green OFF
HAL_GPIO_WritePin(RED_LED_PORT, RED_LED_PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(YELLOW_LED_PORT, YELLOW_LED_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GREEN_LED_PORT, GREEN_LED_PIN, GPIO_PIN_RESET);
HAL_Delay(3000); // 3 seconds
// Yellow ON, Red & Green OFF
HAL_GPIO_WritePin(RED_LED_PORT, RED_LED_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(YELLOW_LED_PORT, YELLOW_LED_PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(GREEN_LED_PORT, GREEN_LED_PIN, GPIO_PIN_RESET);
HAL_Delay(1000); // 1 second
// Green ON, Red & Yellow OFF
HAL_GPIO_WritePin(RED_LED_PORT, RED_LED_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(YELLOW_LED_PORT, YELLOW_LED_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GREEN_LED_PORT, GREEN_LED_PIN, GPIO_PIN_SET);
HAL_Delay(2500); // 2.5 seconds
}
}