|
|
@@ -1,4 +1,5 @@
|
|
|
#include "led.h"
|
|
|
+#include "user_ws2812b.h"
|
|
|
#include "define.h"
|
|
|
#include "stdarg.h"
|
|
|
|
|
|
@@ -7,25 +8,22 @@ tmosTaskID led_task_id = INVALID_TASK_ID;
|
|
|
static uint32_t alarm_stat = 0;
|
|
|
|
|
|
static uint16_t led_task_process_event(uint8_t task_id, uint16_t events);
|
|
|
-static void led_dev_duty(uint16_t duty);
|
|
|
-static void led_01_duty(uint16_t duty);
|
|
|
-static void led_02_duty(uint16_t duty);
|
|
|
-static void led_03_duty(uint16_t duty);
|
|
|
-static void led_04_duty(uint16_t duty);
|
|
|
-static void led_05_duty(uint16_t duty);
|
|
|
+static void prvSet_led_duty(LED_TYPE type);
|
|
|
|
|
|
static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
{
|
|
|
.idx = DEV_LED,
|
|
|
- .set_duty = led_dev_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0xFF,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
.flicker_period = 0,
|
|
|
.flicker_onperiod = 0,
|
|
|
.flicker_count = 0,
|
|
|
- .duty_on = 95,
|
|
|
.duty_value = 0,
|
|
|
.single_on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
.on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
@@ -34,15 +32,17 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
},
|
|
|
{
|
|
|
.idx = LED_01,
|
|
|
- .set_duty = led_01_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
.flicker_period = 0,
|
|
|
.flicker_onperiod = 0,
|
|
|
.flicker_count = 0,
|
|
|
- .duty_on = 95,
|
|
|
.duty_value = 0,
|
|
|
.single_on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
.on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
@@ -51,15 +51,17 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
},
|
|
|
{
|
|
|
.idx = LED_02,
|
|
|
- .set_duty = led_02_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
.flicker_period = 0,
|
|
|
.flicker_onperiod = 0,
|
|
|
.flicker_count = 0,
|
|
|
- .duty_on = 95,
|
|
|
.duty_value = 0,
|
|
|
.single_on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
.on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
@@ -68,15 +70,17 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
},
|
|
|
{
|
|
|
.idx = LED_03,
|
|
|
- .set_duty = led_03_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
.flicker_period = 0,
|
|
|
.flicker_onperiod = 0,
|
|
|
.flicker_count = 0,
|
|
|
- .duty_on = 95,
|
|
|
.duty_value = 0,
|
|
|
.single_on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
.on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
@@ -85,15 +89,17 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
},
|
|
|
{
|
|
|
.idx = LED_04,
|
|
|
- .set_duty = led_04_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
.flicker_period = 0,
|
|
|
.flicker_onperiod = 0,
|
|
|
.flicker_count = 0,
|
|
|
- .duty_on = 95,
|
|
|
.duty_value = 0,
|
|
|
.single_on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
.on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
@@ -102,15 +108,17 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
},
|
|
|
{
|
|
|
.idx = LED_05,
|
|
|
- .set_duty = led_05_duty,
|
|
|
- .color = RED_LED,
|
|
|
+ .color = {
|
|
|
+ .red = 0,
|
|
|
+ .green = 0,
|
|
|
+ .blue = 0,
|
|
|
+ },
|
|
|
.workStat = LED_WORK_OFF,
|
|
|
.viewStat = LED_VIEW_NULL,
|
|
|
.single_flicker_period = 0,
|
|
|
.flicker_period = 0,
|
|
|
.flicker_onperiod = 0,
|
|
|
.flicker_count = 0,
|
|
|
- .duty_on = 95,
|
|
|
.duty_value = 0,
|
|
|
.single_on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
.on_durationTime = 0, //PWM变化结束后持续时间,单位:ms
|
|
|
@@ -120,327 +128,16 @@ static led_work_s led_work[LED_TYPE_MAX] = {
|
|
|
};
|
|
|
|
|
|
/*******************************************************************************
|
|
|
- * @函数名称 led_pwm_init
|
|
|
- * @函数说明 初始化
|
|
|
- * @输入参数 无
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void led_pwm_init(void)
|
|
|
-{
|
|
|
- GPIO_InitTypeDef GPIO_InitStructure={0};
|
|
|
- TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
|
|
|
- TIM_OCInitTypeDef TIM_OutputCompareInitStructure;
|
|
|
- TIM_BDTRInitTypeDef BDTR_Structure;
|
|
|
- TIM5_TimeBaseInitTypeDef TIM5_BaseInitStructure;
|
|
|
- TIM5_OCInitTypeDef TIM5_OutputCompareInitStructure;
|
|
|
- TIM5_BDTRInitTypeDef BDTR5_Structure;
|
|
|
-
|
|
|
- LED_GPIO_RCC_ENABLE;
|
|
|
- GPIO_InitStructure.GPIO_Pin = DEV_LED_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(DEV_LED_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_01_R_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_01_R_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_01_G_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_01_G_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_02_R_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_02_R_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_02_G_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_02_G_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_03_R_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_03_R_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_03_G_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_03_G_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_04_R_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_04_R_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_04_G_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_04_G_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_05_R_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_05_R_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- GPIO_InitStructure.GPIO_Pin = LED_05_G_PIN;
|
|
|
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
|
|
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
- GPIO_Init(LED_05_G_GPIO, &GPIO_InitStructure );
|
|
|
-
|
|
|
- LED_PWM_RCC_ENABLE;
|
|
|
-#ifdef LED_REMAPCONFIG_ENABLE
|
|
|
- LED_REMAPCONFIG_ENABLE;
|
|
|
-#endif
|
|
|
-
|
|
|
- TIM_BaseInitStructure.TIM_Period = TIM_LED_PERIOD;
|
|
|
- TIM_BaseInitStructure.TIM_Prescaler = TIM_LED_PRESCALER - 1;
|
|
|
- TIM_BaseInitStructure.TIM_CounterMode =TIM_CounterMode_Up;
|
|
|
- TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
|
|
- TIM_BaseInitStructure.TIM_RepetitionCounter = 0;
|
|
|
- TIM_TimeBaseInit(TIM3_LED_TYPE, &TIM_BaseInitStructure);
|
|
|
- TIM_TimeBaseInit(TIM4_LED_TYPE, &TIM_BaseInitStructure);
|
|
|
-
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //占空比设置的高电平
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCNPolarity =TIM_OCNPolarity_Low;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OutputState =TIM_OutputState_Enable;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
|
|
- TIM_OutputCompareInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
|
|
|
- TIM_OutputCompareInitStructure.TIM_Pulse = 0;
|
|
|
-
|
|
|
- BDTR_Structure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
|
|
|
- BDTR_Structure.TIM_Break = TIM_Break_Disable;
|
|
|
- BDTR_Structure.TIM_BreakPolarity = TIM_BreakPolarity_High;
|
|
|
- BDTR_Structure.TIM_DeadTime = 0x80;
|
|
|
- BDTR_Structure.TIM_LOCKLevel = TIM_LOCKLevel_1;
|
|
|
- BDTR_Structure.TIM_OSSIState = TIM_OSSIState_Enable;
|
|
|
- BDTR_Structure.TIM_OSSRState = TIM_OSSRState_Enable;
|
|
|
- TIM_BDTRConfig(TIM3_LED_TYPE,&BDTR_Structure);
|
|
|
- TIM_BDTRConfig(TIM4_LED_TYPE,&BDTR_Structure);
|
|
|
-
|
|
|
- LED_01_R_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- LED_01_G_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- LED_02_R_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- LED_02_G_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- LED_03_R_INIT(&TIM_OutputCompareInitStructure);
|
|
|
- LED_03_G_INIT(&TIM_OutputCompareInitStructure);
|
|
|
-
|
|
|
- TIM5_BaseInitStructure.TIM_Period = TIM_LED_PERIOD;
|
|
|
- TIM5_BaseInitStructure.TIM_Prescaler = TIM_LED_PRESCALER - 1;
|
|
|
- TIM5_BaseInitStructure.TIM_CounterMode =TIM_CounterMode_Up;
|
|
|
- TIM5_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
|
|
|
- TIM5_BaseInitStructure.TIM_RepetitionCounter = 0;
|
|
|
- TIM5_TimeBaseInit(&TIM5_BaseInitStructure);
|
|
|
-
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //占空比设置的高电平
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCNPolarity =TIM_OCNPolarity_Low;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OutputState =TIM_OutputState_Enable;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
|
|
|
- TIM5_OutputCompareInitStructure.TIM_Pulse = 0;
|
|
|
-
|
|
|
- BDTR5_Structure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
|
|
|
- BDTR5_Structure.TIM_Break = TIM_Break_Disable;
|
|
|
- BDTR5_Structure.TIM_BreakPolarity = TIM_BreakPolarity_High;
|
|
|
- BDTR5_Structure.TIM_DeadTime = 0x80;
|
|
|
- BDTR5_Structure.TIM_LOCKLevel = TIM_LOCKLevel_1;
|
|
|
- BDTR5_Structure.TIM_OSSIState = TIM_OSSIState_Enable;
|
|
|
- BDTR5_Structure.TIM_OSSRState = TIM_OSSRState_Enable;
|
|
|
- TIM5_BDTRConfig(&BDTR5_Structure);
|
|
|
-
|
|
|
- LED_04_R_INIT(&TIM5_OutputCompareInitStructure);
|
|
|
- LED_04_G_INIT(&TIM5_OutputCompareInitStructure);
|
|
|
- LED_05_R_INIT(&TIM5_OutputCompareInitStructure);
|
|
|
- LED_05_G_INIT(&TIM5_OutputCompareInitStructure);
|
|
|
-
|
|
|
- LED_01_R_RUN;
|
|
|
- LED_01_G_RUN;
|
|
|
- LED_02_R_RUN;
|
|
|
- LED_02_G_RUN;
|
|
|
- LED_03_R_RUN;
|
|
|
- LED_03_G_RUN;
|
|
|
- LED_04_R_RUN;
|
|
|
- LED_04_G_RUN;
|
|
|
- LED_05_R_RUN;
|
|
|
- LED_05_G_RUN;
|
|
|
-
|
|
|
- DEV_LED_OFF;
|
|
|
-
|
|
|
- LED_01_R_COMPARE(0);
|
|
|
- LED_01_G_COMPARE(0);
|
|
|
- LED_02_R_COMPARE(0);
|
|
|
- LED_02_G_COMPARE(0);
|
|
|
- LED_03_R_COMPARE(0);
|
|
|
- LED_03_G_COMPARE(0);
|
|
|
- LED_04_R_COMPARE(0);
|
|
|
- LED_04_G_COMPARE(0);
|
|
|
- LED_05_R_COMPARE(0);
|
|
|
- LED_05_G_COMPARE(0);
|
|
|
-
|
|
|
- TIM_Cmd(TIM3_LED_TYPE,ENABLE);
|
|
|
- TIM_Cmd(TIM4_LED_TYPE,ENABLE);
|
|
|
- TIM_Cmd(TIM5_LED_TYPE,ENABLE);
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 led_dev_duty
|
|
|
- * @函数说明 设置设备指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void led_dev_duty(uint16_t duty)
|
|
|
-{
|
|
|
- if(duty == 0)
|
|
|
- {
|
|
|
- DEV_LED_OFF;
|
|
|
- }
|
|
|
- else{
|
|
|
- DEV_LED_ON;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 led_01_duty
|
|
|
- * @函数说明 设置1号仓指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void led_01_duty(uint16_t duty)
|
|
|
-{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- if(led_work[LED_01].color == RED_LED)
|
|
|
- {
|
|
|
- LED_01_G_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_01_R_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_01].color == GREEN_LED)
|
|
|
- {
|
|
|
- LED_01_R_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_01_G_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_01].color == YELLOW_LED)
|
|
|
- {
|
|
|
- LED_01_R_COMPARE(duty);
|
|
|
- LED_01_G_COMPARE(duty);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 led_02_duty
|
|
|
- * @函数说明 设置2号仓指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
+ * @函数名称 prvSet_led_duty
|
|
|
+ * @函数说明 设置指示灯亮度
|
|
|
+ * @输入参数 type:灯下标
|
|
|
* @输出参数 无
|
|
|
* @返回参数 无
|
|
|
*******************************************************************************/
|
|
|
-static void led_02_duty(uint16_t duty)
|
|
|
+static void prvSet_led_duty(LED_TYPE type)
|
|
|
{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- if(led_work[LED_02].color == RED_LED)
|
|
|
- {
|
|
|
- LED_02_G_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_02_R_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_02].color == GREEN_LED)
|
|
|
- {
|
|
|
- LED_02_R_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_02_G_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_02].color == YELLOW_LED)
|
|
|
- {
|
|
|
- LED_02_R_COMPARE(duty);
|
|
|
- LED_02_G_COMPARE(duty);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 led_03_duty
|
|
|
- * @函数说明 设置3号仓指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void led_03_duty(uint16_t duty)
|
|
|
-{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- if(led_work[LED_03].color == RED_LED)
|
|
|
- {
|
|
|
- LED_03_G_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_03_R_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_03].color == GREEN_LED)
|
|
|
- {
|
|
|
- LED_03_R_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_03_G_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_03].color == YELLOW_LED)
|
|
|
- {
|
|
|
- LED_03_R_COMPARE(duty);
|
|
|
- LED_03_G_COMPARE(duty);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 led_04_duty
|
|
|
- * @函数说明 设置4号仓指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void led_04_duty(uint16_t duty)
|
|
|
-{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- if(led_work[LED_04].color == RED_LED)
|
|
|
- {
|
|
|
- LED_04_G_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_04_R_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_04].color == GREEN_LED)
|
|
|
- {
|
|
|
- LED_04_R_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_04_G_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_04].color == YELLOW_LED)
|
|
|
- {
|
|
|
- LED_04_R_COMPARE(duty);
|
|
|
- LED_04_G_COMPARE(duty);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/*******************************************************************************
|
|
|
- * @函数名称 led_05_duty
|
|
|
- * @函数说明 设置5号仓指示灯PWM百分比
|
|
|
- * @输入参数 duty:百分比
|
|
|
- * @输出参数 无
|
|
|
- * @返回参数 无
|
|
|
-*******************************************************************************/
|
|
|
-static void led_05_duty(uint16_t duty)
|
|
|
-{
|
|
|
- uint16_t value = TIM_LED_PERIOD * duty / 100;
|
|
|
- if(led_work[LED_05].color == RED_LED)
|
|
|
- {
|
|
|
- LED_05_G_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_05_R_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_05].color == GREEN_LED)
|
|
|
- {
|
|
|
- LED_05_R_COMPARE(LED_OFF_DUTY);
|
|
|
- LED_05_G_COMPARE(duty);
|
|
|
- }
|
|
|
- else if(led_work[LED_05].color == YELLOW_LED)
|
|
|
- {
|
|
|
- LED_05_R_COMPARE(duty);
|
|
|
- LED_05_G_COMPARE(duty);
|
|
|
- }
|
|
|
+ vUser_ws2812b_set_stat(type, led_work[type].color.red, led_work[type].color.green,
|
|
|
+ led_work[type].color.blue, led_work[type].duty_value);
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************
|
|
|
@@ -458,13 +155,15 @@ static void led_invert(led_work_s *led_work)
|
|
|
{
|
|
|
led_work->single_flicker_period = led_work->flicker_period;
|
|
|
led_work->stat = LED_STAT_ON;
|
|
|
- led_work->set_duty(LED_ON_DUTY);
|
|
|
+ led_work->duty_value = 100;
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else if(led_work->single_flicker_period == (led_work->flicker_period - led_work->flicker_onperiod))
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
led_work->stat = LED_STAT_OFF;
|
|
|
- led_work->set_duty(LED_OFF_DUTY);
|
|
|
+ led_work->duty_value = 0;
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
led_work->flicker_count--;
|
|
|
}
|
|
|
else{
|
|
|
@@ -473,7 +172,8 @@ static void led_invert(led_work_s *led_work)
|
|
|
}
|
|
|
else{
|
|
|
led_work->workStat = LED_WORK_OFF;
|
|
|
- led_work->set_duty(LED_OFF_DUTY);
|
|
|
+ led_work->duty_value = 0;
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -494,15 +194,15 @@ static void led_heart(led_work_s *led_work)
|
|
|
led_work->single_flicker_period = led_work->flicker_period;
|
|
|
led_work->duty_value = 0;
|
|
|
led_work->single_off_durationTime = led_work->off_durationTime;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
led_work->flicker_count--;
|
|
|
}
|
|
|
else if(led_work->single_flicker_period == off_period)
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
- led_work->duty_value = led_work->duty_on;
|
|
|
+ led_work->duty_value = 100;
|
|
|
led_work->single_on_durationTime = led_work->on_durationTime;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else{
|
|
|
if(led_work->single_flicker_period > off_period)
|
|
|
@@ -511,7 +211,7 @@ static void led_heart(led_work_s *led_work)
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
led_work->duty_value = (led_work->flicker_period - led_work->single_flicker_period) * 100 / led_work->flicker_onperiod;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else{
|
|
|
led_work->single_off_durationTime--;
|
|
|
@@ -522,7 +222,7 @@ static void led_heart(led_work_s *led_work)
|
|
|
{
|
|
|
led_work->single_flicker_period--;
|
|
|
led_work->duty_value = led_work->single_flicker_period * 100 / off_period;
|
|
|
- led_work->set_duty(led_work->duty_value);
|
|
|
+ prvSet_led_duty(led_work->idx);
|
|
|
}
|
|
|
else{
|
|
|
led_work->single_on_durationTime--;
|
|
|
@@ -612,7 +312,7 @@ static uint16_t led_task_process_event(uint8_t task_id, uint16_t events)
|
|
|
* @输出参数 无
|
|
|
* @返回参数 无
|
|
|
*******************************************************************************/
|
|
|
-bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat, ...)
|
|
|
+bool set_led_indication(LED_TYPE type, uint32_t color, LED_WORK_STAT work_stat, ...)
|
|
|
{
|
|
|
bool stat = false;
|
|
|
|
|
|
@@ -621,22 +321,19 @@ bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat,
|
|
|
goto exit;
|
|
|
}
|
|
|
|
|
|
- if(color > YELLOW_LED)
|
|
|
- {
|
|
|
- goto exit;
|
|
|
- }
|
|
|
+ led_work[type].color.red = (color >> 16) & 0xFF;
|
|
|
+ led_work[type].color.green = (color >> 8) & 0xFF;
|
|
|
+ led_work[type].color.blue = color & 0xFF;
|
|
|
|
|
|
if(work_stat == LED_WORK_OFF || work_stat == LED_WORK_ON)
|
|
|
{
|
|
|
- led_work[type].color = color;
|
|
|
led_work[type].workStat = work_stat;
|
|
|
- led_work[type].set_duty((work_stat == LED_WORK_ON) ? LED_ON_DUTY : LED_OFF_DUTY);
|
|
|
-
|
|
|
+ led_work[type].duty_value = (work_stat == LED_WORK_ON) ? 100 : 0;
|
|
|
+ prvSet_led_duty(led_work[type].idx);
|
|
|
stat = true;
|
|
|
}
|
|
|
else if(work_stat == LED_WORK_INVERT || work_stat == LED_WORK_BREATHE)
|
|
|
{
|
|
|
- led_work[type].color = color;
|
|
|
led_work[type].workStat = work_stat;
|
|
|
led_work[type].duty_value = 0;
|
|
|
led_work[type].stat = LED_STAT_OFF;
|
|
|
@@ -662,6 +359,16 @@ bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat,
|
|
|
|
|
|
va_end(ap);
|
|
|
|
|
|
+ for(int i = 1; i < LED_TYPE_MAX; i++)
|
|
|
+ {
|
|
|
+ if(led_work[i].workStat == LED_WORK_INVERT
|
|
|
+ || led_work[i].workStat == LED_WORK_BREATHE)
|
|
|
+ {
|
|
|
+ led_work[i].single_flicker_period = led_work[i].flicker_period;
|
|
|
+ led_work[i].duty_value = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
stat = true;
|
|
|
}
|
|
|
exit:
|
|
|
@@ -679,7 +386,6 @@ void led_task_init(void)
|
|
|
{
|
|
|
led_task_id = TMOS_ProcessEventRegister(led_task_process_event);
|
|
|
PRINT("led_task_id=%d\n", led_task_id);
|
|
|
- led_pwm_init();
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************
|
|
|
@@ -707,20 +413,20 @@ void vUser_led_set_view_stat(led_view_stat_e stat)
|
|
|
switch(stat)
|
|
|
{
|
|
|
case LED_VIEW_ENTER_OTA:{
|
|
|
- set_led_indication(DEV_LED, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
- set_led_indication(LED_01, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
- set_led_indication(LED_02, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
- set_led_indication(LED_03, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
- set_led_indication(LED_04, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
- set_led_indication(LED_05, YELLOW_LED, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ set_led_indication(DEV_LED, WS2812B_BLE_RGB, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ set_led_indication(LED_01, WS2812B_BLE_RGB, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ set_led_indication(LED_02, WS2812B_BLE_RGB, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ set_led_indication(LED_03, WS2812B_BLE_RGB, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ set_led_indication(LED_04, WS2812B_BLE_RGB, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
+ set_led_indication(LED_05, WS2812B_BLE_RGB, LED_WORK_BREATHE, 3000, 1500, 0, 500, 500);
|
|
|
}break;
|
|
|
case LED_VIEW_OTA:{
|
|
|
- set_led_indication(DEV_LED, YELLOW_LED, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
- set_led_indication(LED_01, YELLOW_LED, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
- set_led_indication(LED_02, YELLOW_LED, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
- set_led_indication(LED_03, YELLOW_LED, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
- set_led_indication(LED_04, YELLOW_LED, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
- set_led_indication(LED_05, YELLOW_LED, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
+ set_led_indication(DEV_LED, WS2812B_BLE_RGB, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
+ set_led_indication(LED_01, WS2812B_BLE_RGB, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
+ set_led_indication(LED_02, WS2812B_BLE_RGB, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
+ set_led_indication(LED_03, WS2812B_BLE_RGB, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
+ set_led_indication(LED_04, WS2812B_BLE_RGB, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
+ set_led_indication(LED_05, WS2812B_BLE_RGB, LED_WORK_BREATHE, 200, 100, 0, 10, 10);
|
|
|
}break;
|
|
|
default:break;
|
|
|
}
|