#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); }