平台预留了一些GPIO与外部LCD/LED/振动器相连,能控制实现一些播放效果。
LED灯引脚三个;对应如下三种颜色的LED灯(查看函数custom_get_led_label)
GPIO_DEV_LED_STATUS_1:LED_RED
GPIO_DEV_LED_STATUS_2:LED_GREEN
GPIO_DEV_LED_STATUS_3:LED_BLUE
平台默认定义了多种LCD/LED/VIB播放模式;(查看custom_led_patterns.h中枚举体PATTERN_ID)
LED播放模式例举有:
LED_POWER_ON = LED_PATTERN_BEGIN, //开机闪烁模式
LED_POWER_OFF, //关机闪烁
LED_BATTERY_WARNING,
LED_BATTERY_LOW, //低电量
LED_Connect900, //信号灯效果
LED_Connect1800, //信号灯效果
除了原有的模式,可以客制化增加自己的动画模式,以上模式枚举出了ID,真正的模式实现如下:
LED灯烁模式(默认20种)存放于数组led_gpio_patterns[]中,具体对应为:
const LED_PATTERN_STRUCT *led_gpio_patterns[] =
{
led_gpio_ptn1,
led_gpio_ptn2,
led_gpio_ptn3,
led_gpio_ptn4,
led_gpio_ptn5,
led_gpio_ptn6,
..........
};
模式数组中,例举第一种闪烁模式的具体实现如下,
其中前三列分别代表RED/GREEN/BLUE的模式;最后一列表示LED亮度持续时间。
具体播放该模式时,会逐行播放,知道取到最后一行的持续时间为0,表示播放结束。
const LED_PATTERN_STRUCT led_gpio_ptn1[] =
{
/* red ligth 1, green ligth 2, blue light 3, duration time */
{{LED_LEVEL_5, LED_LEVEL_0, LED_LEVEL_0}, 500},
{{LED_LEVEL_0, LED_LEVEL_5, LED_LEVEL_0}, 500},
{{LED_LEVEL_0, LED_LEVEL_0, LED_LEVEL_5}, 500},
{{LED_LEVEL_5, LED_LEVEL_5, LED_LEVEL_0}, 500},
{{LED_LEVEL_0, LED_LEVEL_5, LED_LEVEL_5}, 500},
{{LED_LEVEL_5, LED_LEVEL_0, LED_LEVEL_5}, 500},
{{LED_LEVEL_0, LED_LEVEL_0, LED_LEVEL_0}, 0} /* duration timer is zero to terminate it */
};
LED的亮度等级定义为六种:对应了LED灯的强度。
#define LED_LEVEL_0 0
#define LED_LEVEL_1 1
#define LED_LEVEL_2 2
#define LED_LEVEL_3 3
#define LED_LEVEL_4 4
#define LED_LEVEL_5 5
做出如上模式定义后,播放LED模式的函数为:
kal_bool uem_play_pattern(PATTERN_ID pattern_id, PATTERN_TYPE pattern_type);
函数kal_bool uem_play_pattern(PATTERN_ID pattern_id, PATTERN_TYPE pattern_type);
最终会调用底层接口:
kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
该函数可控制实现拉高拉低某个引脚;
例如配置RED LED后,具体在此函数中实现拉高拉低LED引脚的功能:
kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
{
case GPIO_DEV_LED_STATUS_1:
if( gpio_dev_level == LED_LIGHT_LEVEL0)
GPIO_WriteIO(GPIO_ON, gpio_led_status_en_pin);
else
GPIO_WriteIO(GPIO_OFF, gpio_led_status_en_pin);
break;
}
LED灯引脚三个;对应如下三种颜色的LED灯(查看函数custom_get_led_label)
GPIO_DEV_LED_STATUS_1:LED_RED
GPIO_DEV_LED_STATUS_2:LED_GREEN
GPIO_DEV_LED_STATUS_3:LED_BLUE
平台默认定义了多种LCD/LED/VIB播放模式;(查看custom_led_patterns.h中枚举体PATTERN_ID)
LED播放模式例举有:
LED_POWER_ON = LED_PATTERN_BEGIN, //开机闪烁模式
LED_POWER_OFF, //关机闪烁
LED_BATTERY_WARNING,
LED_BATTERY_LOW, //低电量
LED_Connect900, //信号灯效果
LED_Connect1800, //信号灯效果
除了原有的模式,可以客制化增加自己的动画模式,以上模式枚举出了ID,真正的模式实现如下:
LED灯烁模式(默认20种)存放于数组led_gpio_patterns[]中,具体对应为:
const LED_PATTERN_STRUCT *led_gpio_patterns[] =
{
led_gpio_ptn1,
led_gpio_ptn2,
led_gpio_ptn3,
led_gpio_ptn4,
led_gpio_ptn5,
led_gpio_ptn6,
..........
};
模式数组中,例举第一种闪烁模式的具体实现如下,
其中前三列分别代表RED/GREEN/BLUE的模式;最后一列表示LED亮度持续时间。
具体播放该模式时,会逐行播放,知道取到最后一行的持续时间为0,表示播放结束。
const LED_PATTERN_STRUCT led_gpio_ptn1[] =
{
/* red ligth 1, green ligth 2, blue light 3, duration time */
{{LED_LEVEL_5, LED_LEVEL_0, LED_LEVEL_0}, 500},
{{LED_LEVEL_0, LED_LEVEL_5, LED_LEVEL_0}, 500},
{{LED_LEVEL_0, LED_LEVEL_0, LED_LEVEL_5}, 500},
{{LED_LEVEL_5, LED_LEVEL_5, LED_LEVEL_0}, 500},
{{LED_LEVEL_0, LED_LEVEL_5, LED_LEVEL_5}, 500},
{{LED_LEVEL_5, LED_LEVEL_0, LED_LEVEL_5}, 500},
{{LED_LEVEL_0, LED_LEVEL_0, LED_LEVEL_0}, 0} /* duration timer is zero to terminate it */
};
LED的亮度等级定义为六种:对应了LED灯的强度。
#define LED_LEVEL_0 0
#define LED_LEVEL_1 1
#define LED_LEVEL_2 2
#define LED_LEVEL_3 3
#define LED_LEVEL_4 4
#define LED_LEVEL_5 5
做出如上模式定义后,播放LED模式的函数为:
kal_bool uem_play_pattern(PATTERN_ID pattern_id, PATTERN_TYPE pattern_type);
函数kal_bool uem_play_pattern(PATTERN_ID pattern_id, PATTERN_TYPE pattern_type);
最终会调用底层接口:
kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
该函数可控制实现拉高拉低某个引脚;
例如配置RED LED后,具体在此函数中实现拉高拉低LED引脚的功能:
kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level )
{
case GPIO_DEV_LED_STATUS_1:
if( gpio_dev_level == LED_LIGHT_LEVEL0)
GPIO_WriteIO(GPIO_ON, gpio_led_status_en_pin);
else
GPIO_WriteIO(GPIO_OFF, gpio_led_status_en_pin);
break;
}