#include "light_driver.h" #include "speed_sensor.h" MC_LightDriver_IO_Struct_t HeadLightIO_Groups[3] = { {GPIOB, GPIO_PIN_4|GPIO_PIN_5}, //前灯6V {GPIOB, GPIO_PIN_6}, //前灯12V {GPIOB, GPIO_PIN_7}, //前灯随电池电压 }; MC_LightDriver_IO_Struct_t TailLightIO_Groups[3] = { {GPIOB, GPIO_PIN_2}, //尾灯6V {GPIOB, GPIO_PIN_0}, //尾灯12V {GPIOA, GPIO_PIN_6} //尾灯随电池电压 }; 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(OnFlag == TRUE)//开灯时,仅打开配置的IO { for(i=0; i= 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, TRUE); } else if(FlashTimeCnt < MC_ConfigParam2.u16Prediv) { LightDriver_IO_Control(TailLightIO_Groups, sizeof(TailLightIO_Groups)/sizeof(MC_LightDriver_IO_Struct_t), TailLightIO_Groups_ID, FALSE); } else { FlashTimeCnt = 0; } FlashTimeCnt++; } else { FlashTimeCnt = 0; 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; } } }