extern "C" {
#include "stm32f1xx_hal.h"
}
void GPIO_Init(void) {
__HAL_RCC_GPIOA_CLK_ENABLE(); // habilita o clock do barramento
GPIO_InitTypeDef GPIO_InitStruct = {0};
// Ініціалізація пінів A0-A3 як виходи
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Saída digital
GPIO_InitStruct.Pull = GPIO_NOPULL; // Sem resistor pull-up
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // Baixa velocidade
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // Inicialização GPIO
// Початкове вимкнення всіх світлодіодів
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
}
void SystemClock_Config(void) {
// Configuração do relógio do sistema (deixe em branco se estiver usando Wokwi)
}
int main(void) {
HAL_Init(); // Inicializa a biblioteca HAL
SystemClock_Config(); //Configurando a frequência do clock
GPIO_Init(); // Inicializa o GPIO para os LEDs
while (1) {
// Ligue e desligue o 4º LED
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
// Ligue e desligue o 1º LED
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);
// Ligue e desligue o 1º LED
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
// Ligue e desligue o 1º LED
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_Delay(200); // Pausa antes do próximo ciclo
}
}