本文共 2020 字,大约阅读时间需要 6 分钟。
平台预留了一些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; }转载地址:http://osrdi.baihongyu.com/