// ---------------------------------------------------------------------------
// (| " main.c                                                            "|)
// (| " Esta función principal enciende un LED durante 200 mseg, luego lo "|)
// (| " apaga durante 200 milisegundos, indefinidamente. Contiene         "|)
// (| " cabecera, argumentos y sentencias.                                "|)
// (| "   							                                                  "|)
// (| " Este código de ejemplo es de dominio público.                     "|)
// (| "                                                                   "|)
// (| " Board-st-nucleo-l432kc                                            "|)
// (| "                                                                   "|)
// (| " Maker/Developer: jorgechac© - Técnico Laboral en Programación UNAB"|)
// (| " Visita https://jorgechac.blogspot.com                             "|)
// (| "                                                                   "|)
// (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32               "|)
// (| " Whatsapp y Ventas NEQUI +573177295861                             "|)
// (| " Bucaramanga - Colombia                                            "|)
// (| " Simulación https://wokwi.com/projects/340121837338886738          "|)
// ---------------------------------------------------------------------------

// Se utiliza la biblioteca STM32 HAL (Hardware Abstraction Layer), que
// proporciona una interfaz de alto nivel para interactuar con el hardware
// STM32

#include "stm32l4xx_hal.h"

// Estas líneas definen el pin del LED, el puerto GPIO al que está
// conectado y una macro para habilitar el reloj del puerto GPIO

#define LED_PIN               GPIO_PIN_4
#define LED_GPIO_PORT         GPIOB
#define LED_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()

int main(void)
{
  HAL_Init(); // Se inicializa el sistema HAL

  LED_GPIO_CLK_ENABLE();  // Se habilita el reloj del puerto GPIO asociado al LED

  GPIO_InitTypeDef GPIO_InitStruct; // Se configura el pin del LED como salida push-pull

  GPIO_InitStruct.Pin = LED_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);

  while (1)
  {
    HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN); // el LED se alterna encendido/apagado cada 200 ms
    HAL_Delay(200);
  }
}

void SysTick_Handler(void)  // Se incrementa la cuenta de ticks utilizada
                            // por la función de retardo (HAL_Delay)
{
  HAL_IncTick();
}

void NMI_Handler(void)
{
}

void HardFault_Handler(void)
{
  while (1) {}
}

void MemManage_Handler(void)
{
  while (1) {}
}

void BusFault_Handler(void)
{
  while (1) {}
}

void UsageFault_Handler(void)
{
  while (1) {}
}

void SVC_Handler(void)
{
}

void DebugMon_Handler(void)
{
}

void PendSV_Handler(void)
{
}
Loading
st-nucleo-l432kc