|
@@ -14,11 +14,11 @@ MC_LightDriver_IO_Struct_t TailLightIO_Groups[3] =
|
|
|
{GPIOA, GPIO_PIN_6} //尾灯随电池电压
|
|
|
};
|
|
|
|
|
|
-static void LightDriver_IO_Control(MC_LightDriver_IO_Struct_t* IO_Groups, uint8_t Len, uint8_t ID, MC_LightSwitch_Struct_t SwitchCode)
|
|
|
+static void LightDriver_IO_Control(MC_LightDriver_IO_Struct_t* IO_Groups, uint8_t Len, uint8_t ID, TrueOrFalse_Flag_Struct_t OnFlag)
|
|
|
{
|
|
|
uint8_t i;
|
|
|
|
|
|
- if(SwitchCode == MC_LightSwitch_ON)//开灯时,仅打开配置的IO
|
|
|
+ if(OnFlag == TRUE)//开灯时,仅打开配置的IO
|
|
|
{
|
|
|
for(i=0; i<Len; i++)
|
|
|
{
|
|
@@ -61,15 +61,15 @@ void LightDriver_Init(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_Struct_t HeadLightVol, MC_LightVoltage_Struct_t TailLightVol, TrueOrFalse_Flag_Struct_t IsBreakFlag, MC_LightSwitch_Struct_t LightSwitchCode)
|
|
|
+void LightDriver_Process(uint8_t Light_Mode, MC_LightVoltage_Struct_t HeadLightVol, MC_LightVoltage_Struct_t TailLightVol, TrueOrFalse_Flag_Struct_t IsBreakFlag, MC_LightSwitch_Struct_t LightSwitchCode)
|
|
|
{
|
|
|
uint8_t HeadLightIO_Groups_ID, TailLightIO_Groups_ID;
|
|
|
|
|
|
//开机前2s不处理,关灯处理
|
|
|
if(HAL_GetTick() < 2000)
|
|
|
{
|
|
|
- LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, FALSE);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -126,12 +126,12 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
{
|
|
|
case MC_FRONT_LIGHT_MODE1: //常亮
|
|
|
{
|
|
|
- LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, MC_LightSwitch_ON);
|
|
|
+ LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, TRUE);
|
|
|
break;
|
|
|
}
|
|
|
case MC_FRONT_LIGHT_MODE2: default: //仪表控制开关
|
|
|
{
|
|
|
- LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, LightSwitchCode);
|
|
|
+ LightDriver_IO_Control(HeadLightIO_Groups, sizeof(HeadLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), HeadLightIO_Groups_ID, (LightSwitchCode & 0x01) ? TRUE : FALSE);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -145,20 +145,20 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
{
|
|
|
if(IsBreakFlag == TRUE)//刹车时,高亮
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
FlashTimeCnt = 0;
|
|
|
}
|
|
|
else//无刹车时,开灯低亮
|
|
|
{
|
|
|
- if(LightSwitchCode == MC_LightSwitch_ON)
|
|
|
+ if(LightSwitchCode & 0x01)
|
|
|
{
|
|
|
if(FlashTimeCnt < MC_ConfigParam2.u16EffectVal) //尾灯亮起有效值
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
}
|
|
|
else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv) //控制周期:15K / Period 尾灯亮起的频率
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -166,9 +166,9 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
}
|
|
|
FlashTimeCnt++;
|
|
|
}
|
|
|
- else if(LightSwitchCode == MC_LightSwitch_OFF)
|
|
|
+ else
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
FlashTimeCnt = 0;
|
|
|
}
|
|
|
}
|
|
@@ -180,11 +180,11 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
{
|
|
|
if(FlashTimeCnt < 600)
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
}
|
|
|
else if(FlashTimeCnt < 1200) //闪烁频率:15K / 1200 = 12.5Hz
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -194,14 +194,14 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
}
|
|
|
else//无刹车时,开灯亮
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, LightSwitchCode);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (LightSwitchCode & 0x01) ? TRUE : FALSE);
|
|
|
FlashTimeCnt = 0;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
case MC_TAIL_LIGHT_MODE3://连接刹车灯,刹车高亮
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (IsBreakFlag == TRUE) ? MC_LightSwitch_ON : MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (IsBreakFlag == TRUE) ? TRUE : FALSE);
|
|
|
break;
|
|
|
}
|
|
|
case MC_TAIL_LIGHT_MODE4://连接刹车灯,刹车闪烁
|
|
@@ -210,11 +210,11 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
{
|
|
|
if(FlashTimeCnt < 600)
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
}
|
|
|
else if(FlashTimeCnt < 1200) //闪烁频率:15K / 1200 = 12.5Hz
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -224,27 +224,27 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
}
|
|
|
else//无刹车时,关闭
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
FlashTimeCnt = 0;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
case MC_TAIL_LIGHT_MODE5://模式5,常亮
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
break;
|
|
|
}
|
|
|
- case MC_TAIL_LIGHT_MODE6://超速报警
|
|
|
+ case MC_TAIL_LIGHT_MODE6://模式6,超速报警
|
|
|
{
|
|
|
if(MC_SpeedSensorData.Speed_Data >= MC_ConfigParam2.u16OverspeedWarnVal)
|
|
|
{
|
|
|
if(FlashTimeCnt < MC_ConfigParam2.u16EffectVal)
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_ON);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
}
|
|
|
- else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv) //
|
|
|
+ else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv)
|
|
|
{
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -255,10 +255,45 @@ void LightDriver_Process(MC_TailLight_Mode_Struct_t Light_Mode, MC_LightVoltage_
|
|
|
else
|
|
|
{
|
|
|
FlashTimeCnt = 0;
|
|
|
- LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, MC_LightSwitch_OFF);
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
+ case MC_TAIL_LIGHT_MODE7://模式7,开机自动低亮,刹车高亮
|
|
|
+ {
|
|
|
+ if(IsBreakFlag == TRUE)//刹车时,高亮
|
|
|
+ {
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
+ FlashTimeCnt = 0;
|
|
|
+ }
|
|
|
+ else//无刹车时,低亮
|
|
|
+ {
|
|
|
+ if(FlashTimeCnt < MC_ConfigParam2.u16EffectVal) //尾灯亮起有效值
|
|
|
+ {
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, TRUE);
|
|
|
+ }
|
|
|
+ else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv) //控制周期:15K / Period 尾灯亮起的频率
|
|
|
+ {
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ FlashTimeCnt = 0;
|
|
|
+ }
|
|
|
+ FlashTimeCnt++;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case MC_TAIL_LIGHT_MODE8://模式8,仅开灯高亮,与前灯指令一致
|
|
|
+ {
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (LightSwitchCode & 0x01) ? TRUE : FALSE);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case MC_TAIL_LIGHT_MODE9://模式9,仅开灯高亮,与前灯指令不同
|
|
|
+ {
|
|
|
+ LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, (LightSwitchCode & 0x02) ? TRUE : FALSE);
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|