62 lines
1.4 KiB
C
62 lines
1.4 KiB
C
#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;
|
||
/* SmartConfig 配网中标志:1=NET_LED 100ms 快闪 */
|
||
volatile uint8_t g_net_led_smartconfig = 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 >= 200) {
|
||
last_tick = HAL_GetTick();
|
||
LED2_TOGGLE;
|
||
}
|
||
|
||
/* 联网指示灯控制:SmartConfig 配网中 100ms 快闪;
|
||
* 未联网时每 500ms 闪烁,联网成功后常亮 */
|
||
if (g_net_led_smartconfig) {
|
||
if (HAL_GetTick() - net_led_tick >= 100) {
|
||
net_led_tick = HAL_GetTick();
|
||
NET_LED_TOGGLE;
|
||
}
|
||
} else if (!g_net_led_connected) {
|
||
if (HAL_GetTick() - net_led_tick >= 500) {
|
||
net_led_tick = HAL_GetTick();
|
||
NET_LED_TOGGLE;
|
||
}
|
||
} else {
|
||
NET_LED_ON;
|
||
}
|
||
}
|