|
@@ -25,16 +25,78 @@ void LightDriver_Init(void)
|
|
|
HAL_GPIO_Init(LIGHT_B_GPIO_Port, &GPIO_InitStruct);
|
|
|
}
|
|
|
|
|
|
-void LightDriver_Process(MC_LightSwitch_Struct_t LightSwitchCode)
|
|
|
+void LightDriver_Process(MC_TailLight_Mode_Struct_t TailLight_Mode, uint8_t OnTime, uint8_t PeriodTime, TrueOrFalse_Flag_Struct_t IsBreakFlag, MC_LightSwitch_Struct_t LightSwitchCode)
|
|
|
{
|
|
|
- if(LightSwitchCode == MC_LightSwitch_ON)
|
|
|
+ //控制前灯
|
|
|
+ if(LightSwitchCode == MC_LightSwitch_ON)
|
|
|
{
|
|
|
HAL_GPIO_WritePin(LIGHT_F_GPIO_Port, LIGHT_F_Pin, GPIO_PIN_SET);
|
|
|
- HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
|
|
|
}
|
|
|
else if(LightSwitchCode == MC_LightSwitch_OFF)
|
|
|
{
|
|
|
HAL_GPIO_WritePin(LIGHT_F_GPIO_Port, LIGHT_F_Pin, GPIO_PIN_RESET);
|
|
|
- HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
|
|
|
}
|
|
|
+
|
|
|
+ //控制后灯
|
|
|
+ uint8_t Light_CrlCode = 0;//高4位:控制方式,1-常亮,2-闪烁; 低4位:开关状态,1-开,2-关
|
|
|
+ static uint32_t FlashTimeCnt = 0;
|
|
|
+ switch(TailLight_Mode)
|
|
|
+ {
|
|
|
+ case MC_TAIL_LIGHT_LAMP_FlASH: //照明闪烁
|
|
|
+ {
|
|
|
+ Light_CrlCode = (LightSwitchCode == MC_LightSwitch_ON) ? 0x21 : 0x20;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case MC_TAIL_LIGHT_BREAK_FLASH: //刹车闪烁
|
|
|
+ {
|
|
|
+ Light_CrlCode = (IsBreakFlag == TRUE) ? 0x21 : 0x20;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case MC_TAIL_LIGHT_BREAK: //刹车常亮
|
|
|
+ {
|
|
|
+ Light_CrlCode = (IsBreakFlag == TRUE) ? 0x11 : 0x10;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case MC_TAIL_LIGHT_LAMP: //照明常亮
|
|
|
+ default: //未配置时为照明常亮
|
|
|
+ {
|
|
|
+ Light_CrlCode = (LightSwitchCode == MC_LightSwitch_ON) ? 0x11 : 0x10;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if((Light_CrlCode & 0xF0) == 0x10)//常亮
|
|
|
+ {
|
|
|
+ if((Light_CrlCode & 0x0F) == 0x01)//开
|
|
|
+ {
|
|
|
+ HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
|
|
|
+ }
|
|
|
+ else if((Light_CrlCode & 0x0F) == 0x00)//关
|
|
|
+ {
|
|
|
+ HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if((Light_CrlCode & 0xF0) == 0x20)//闪烁
|
|
|
+ {
|
|
|
+ if((Light_CrlCode & 0x0F) == 0x01)//开
|
|
|
+ {
|
|
|
+ if((HAL_GetTick() - FlashTimeCnt) < OnTime * 20)
|
|
|
+ {
|
|
|
+ HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
|
|
|
+ }
|
|
|
+ else if((HAL_GetTick() - FlashTimeCnt) < PeriodTime * 20)
|
|
|
+ {
|
|
|
+ HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ FlashTimeCnt = HAL_GetTick();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if((Light_CrlCode & 0x0F) == 0x00)//关
|
|
|
+ {
|
|
|
+ HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
|
|
|
+ FlashTimeCnt = HAL_GetTick();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|