#include <stdint.h>
#include "stm32f103_hal.h"
void TIM2_IRQHandler(void)
{
if (TIM2->SR & TIM_SR_UIF)
{
TIM2->SR &= ~TIM_SR_UIF;
// Usando la funcion de la libreria para conmutar:
gpio_bitwise_toggle(GPIOC, (1 << 13));
}
}
int main(void)
{
// 1. Habilitar reloj del puerto C
rcc_clock_enable(RCC_GPIOC);
// 2. Configurar PC13 como salida
gpio_set_output(GPIOC, 13, GPIO_OUTPUT_PP, GPIO_SPEED_50MHZ);
// 3. Inicializar el Timer 2 para 500ms
// Frecuencia HSI = 8MHz. PSC = 7999, ARR = 499
timer_init(TIM2, TIMER_MODE_UP, 499, 7999);
// 4. Habilitar la interrupción
timer_set_interrupt(TIM2, TIMER_IRQ_UPDATE, IRQ_ENABLE);
nvic_enable_irq(TIM2_IRQn);
nvic_enable();
// 5. Arrancar el Timer en modo continuo
timer_start(TIM2, TIMER_CONTINUOUS);
while (1)
{
}
}