KT25-1015_AC695x_SDK310/apps/kaotings/kt_light_led.c

72 lines
1.4 KiB
C
Raw Normal View History

2026-04-24 08:03:25 +00:00
#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);
}