#include "stm32c0xx_hal.h"
// Définition des broches LEDs
#define LED1_PIN GPIO_PIN_0
#define LED2_PIN GPIO_PIN_1
#define LED3_PIN GPIO_PIN_4
#define LED4_PIN GPIO_PIN_1
#define LED_PORT1 GPIOA
#define LED_PORT2 GPIOA
#define LED_PORT3 GPIOA
#define LED_PORT4 GPIOB
#define BUTTON_PIN GPIO_PIN_3
#define BUTTON_PORT GPIOA
void GPIO_Init(void);
void allumerLEDsGaucheADroite(void);
void eteindreLEDsDroiteAGauche(void);
int main(void)
{
HAL_Init();
GPIO_Init();
while (1)
{
if (HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN) == GPIO_PIN_RESET) // Bouton appuyé (active low)
{
allumerLEDsGaucheADroite();
}
else
{
eteindreLEDsDroiteAGauche();
}
}
}
void GPIO_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
// __HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = LED1_PIN | LED2_PIN | LED3_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_PORT1, &GPIO_InitStruct);
GPIO_InitStruct.Pin = LED4_PIN;
HAL_GPIO_Init(LED_PORT4, &GPIO_InitStruct);
GPIO_InitStruct.Pin = BUTTON_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
}
void allumerLEDsGaucheADroite(void)
{
HAL_GPIO_WritePin(LED_PORT1, LED1_PIN, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED_PORT2, LED2_PIN, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED_PORT3, LED3_PIN, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED_PORT4, LED4_PIN, GPIO_PIN_SET);
HAL_Delay(500);
}
void eteindreLEDsDroiteAGauche(void)
{
HAL_GPIO_WritePin(LED_PORT4, LED4_PIN, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED_PORT3, LED3_PIN, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED_PORT2, LED2_PIN, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED_PORT1, LED1_PIN, GPIO_PIN_RESET);
HAL_Delay(500);
}