#include "stm32c0xx_hal.h"
#define LED1_PIN GPIO_PIN_1 // PA1
#define LED2_PIN GPIO_PIN_4 // PA4
#define LED3_PIN GPIO_PIN_1 // PB1
#define BUTTON_PIN GPIO_PIN_13 // PA0
// Prototypes
void SystemClock_Config(void);
void GPIO_Init(void);
void allumerLEDs(void);
void eteindreLEDs(void);
int main(void)
{
HAL_Init(); // Initialize the HAL library
SystemClock_Config(); // Set up the clock
GPIO_Init(); // Initialize GPIO pins
while (1)
{
// Read the button state
GPIO_PinState buttonState = HAL_GPIO_ReadPin(GPIOC, BUTTON_PIN);
if (buttonState == GPIO_PIN_SET)
{
allumerLEDs();
}
else
{
eteindreLEDs();
}
HAL_Delay(100); // Small delay to debounce button
}
}
void GPIO_Init(void)
{
// Enable GPIOA and GPIOB clocks
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
// Initialize LEDs as output
GPIO_InitStruct.Pin = LED1_PIN | LED2_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = LED3_PIN;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// Initialize the button as input
GPIO_InitStruct.Pin = BUTTON_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP; // Use internal pull-up resistor
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
void allumerLEDs(void)
{
HAL_GPIO_WritePin(GPIOA, LED1_PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, LED2_PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, LED3_PIN, GPIO_PIN_SET);
}
void eteindreLEDs(void)
{
HAL_GPIO_WritePin(GPIOA, LED1_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, LED2_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, LED3_PIN, GPIO_PIN_RESET);
}
void SystemClock_Config(void)
{
// Default clock configuration
}