#include "kt_light_led.h" #include "tone_player.h" static u8 led_mode = 0; static u16 tid = 0; const char *light_led_level_tone[3] = {TONE_LT_L0, TONE_LT_L1, TONE_LT_L2}; void led_flash_callback(void *p) { static u8 flag = 0; flag = !flag; if (flag) { gpio_set_output_value(KT_CFG_LED_PIN, 1); } else { gpio_set_output_value(KT_CFG_LED_PIN, 0); } } void kt_light_led_level_change(void) { led_mode++; if (led_mode > 2) //0-2 { led_mode = 0; } tone_play(light_led_level_tone[led_mode], 1); switch (led_mode) { case 0: //关灯 if (tid) { sys_timer_del(tid); } tid = 0; gpio_set_output_value(KT_CFG_LED_PIN, 0); break; case 1: //爆闪 2.5hz 50%占空比 if (tid) { sys_timer_del(tid); } tid = sys_timer_add(NULL, led_flash_callback, 200); break; case 2: //常亮 if (tid) { sys_timer_del(tid); } tid = 0; gpio_set_output_value(KT_CFG_LED_PIN, 1); break; } } void kt_light_led_init(void) { led_mode = 0; // 初始化GPIO LED gpio_set_pull_down(KT_CFG_LED_PIN, 0); gpio_set_pull_up(KT_CFG_LED_PIN, 0); gpio_set_direction(KT_CFG_LED_PIN, 0); gpio_set_output_value(KT_CFG_LED_PIN, 0); }