#include "led.h"

/**
 * @brief LED心跳指示灯功能
 * @details 实现类似心跳的LED闪烁模式：快闪两次然后暂停
 *          适合在SysTick中断中调用，通过计数器控制闪烁节拍
 * @note 假设SysTick中断频率为1ms，心跳周期约为2秒
 *       心跳模式：亮200ms->灭200ms->亮200ms->灭1400ms（循环）
 */
void led_heart_beat(void)
{
    static uint16_t heart_beat_counter = 0;
    
    // 心跳周期：2000ms (假设SysTick为1ms中断)
    // 模式：亮200ms -> 灭200ms -> 亮200ms -> 灭1400ms
    heart_beat_counter++;
    
    if (heart_beat_counter <= 200) {
        // 第一次亮：0-200ms
        led_on();
    }
    else if (heart_beat_counter <= 400) {
        // 第一次灭：200-400ms  
        led_off();
    }
    else if (heart_beat_counter <= 600) {
        // 第二次亮：400-600ms
        led_on();
    }
    else if (heart_beat_counter <= 2000) {
        // 长时间灭：600-2000ms
        led_off();
    }
    else {
        // 重置计数器，开始新的心跳周期
        heart_beat_counter = 0;
    }
}

void led_init(void) {
    rcu_periph_clock_enable(LED_RCU);
    gpio_mode_set(LED_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED_PIN);
    gpio_output_options_set(LED_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, LED_PIN);
    gpio_bit_set(LED_PORT, LED_PIN);
}

void led_on(void) {
    gpio_bit_reset(LED_PORT, LED_PIN);
}

void led_off(void) {
    gpio_bit_set(LED_PORT, LED_PIN);
}

void led_toggle(void) {
    gpio_bit_toggle(LED_PORT, LED_PIN);
}
