#include "led.h" static uint32_t last_tick = 0; static uint32_t net_led_tick = 0; /* 联网状态标志:0=未联网,1=联网成功 */ volatile uint8_t g_net_led_connected = 0; void ledInit(void) { GPIO_InitTypeDef g = {0}; __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); g.Mode = GPIO_MODE_OUTPUT_PP; g.Pull = GPIO_NOPULL; g.Speed = GPIO_SPEED_FREQ_LOW; /* LED2 - PC13 */ g.Pin = LED2_Pin; HAL_GPIO_Init(LED2_Port, &g); /* 联网指示灯 - PA1, 默认熄灭 */ g.Pin = NET_LED_Pin; HAL_GPIO_Init(NET_LED_Port, &g); LED2_OFF; NET_LED_OFF; g_net_led_connected = 0; last_tick = HAL_GetTick(); net_led_tick = HAL_GetTick(); } /* 主动事件: 每500ms LED2闪烁一次 */ void activeEvents(void) { if (HAL_GetTick() - last_tick >= 500) { last_tick = HAL_GetTick(); LED2_TOGGLE; } /* 联网指示灯控制:未联网时每 500ms 闪烁,联网成功后常亮 */ if (!g_net_led_connected) { if (HAL_GetTick() - net_led_tick >= 500) { net_led_tick = HAL_GetTick(); NET_LED_TOGGLE; } } else { NET_LED_ON; } }