Selaa lähdekoodia

V7.0.0_20210120
1、增加尾灯工作模式的配置,共设置4种模式,该程序工作于模式3;
2、调整LightDriver_Process处理函数;
3、IsBreakTrig_Flag初始化为FALSE,否则开机时会导致刹车灯亮1s左右;
4、版本号:V7.0.0_20210120

dail.zhou 4 vuotta sitten
vanhempi
sitoutus
a8deabe8f1

+ 1 - 4
Core/Src/main.c

@@ -257,10 +257,7 @@ int main(void)
 			
 			//检测刹车信号
 			Break_Check(&IsBreakTrig_Flag);
-			
-			//Light控制
-			LightDriver_Process(MC_ControlCode.LightSwitch);
-			
+						
 			//续航里程计算
 			if(HAL_GetTick() > 2000)
 			{

BIN
MDK-ARM/bin/MC_TTKZ010A_V7.0.0_20210120_1.bin


BIN
MDK-ARM/bin/QD007A_CTL_APP.bin


+ 1 - 1
User/Inc/light_driver.h

@@ -10,6 +10,6 @@
 #define LIGHT_B_GPIO_Port GPIOA
 
 void LightDriver_Init(void);
-void LightDriver_Process(MC_LightSwitch_Struct_t LightSwitchCode);
+void LightDriver_Process(MC_TailLight_Mode_Struct_t TailLight_Mode, TrueOrFalse_Flag_Struct_t IsBreakFlag, MC_LightSwitch_Struct_t LightSwitchCode);
 
 #endif

+ 10 - 1
User/Inc/var.h

@@ -136,6 +136,14 @@ typedef enum MC_SUPPORTFLAG
 	MC_SUPPORT_DISABLE = (uint8_t)0x55  //不支持
 }MC_SupportFlag_Struct_t;
 
+typedef enum MC_TAIL_LIGHT_MODE
+{
+  MC_TAIL_LIGHT_MODE1 = (uint8_t)0x01,  //模式1,连接尾灯,开灯时低亮,刹车时高亮
+	MC_TAIL_LIGHT_MODE2 = (uint8_t)0x02,  //模式2,连接尾灯,开灯时高亮,刹车时闪烁
+	MC_TAIL_LIGHT_MODE3 = (uint8_t)0x03,  //模式3,连接刹车灯,刹车时高亮
+	MC_TAIL_LIGHT_MODE4 = (uint8_t)0x04   //模式4,连接刹车灯,刹车时闪烁
+}MC_TailLight_Mode_Struct_t;
+
 //用户配置参数1,占用空间32bytes
 typedef struct
 {
@@ -172,7 +180,8 @@ typedef struct
   int16_t ZeroAngle_Pitch;         //俯仰角零度偏移,地址偏移0
 	int16_t ZeroAngle_Roll;          //横滚角零度偏移,地址偏移2
 	MC_SupportFlag_Struct_t UseAttitudeAngle_Flag; //支持姿态角度传感器标志,地址偏移4
-	uint8_t RS2[27];//地址偏移5
+	MC_TailLight_Mode_Struct_t MC_TailLight_Mode;  //尾灯功能,地址偏移5
+	uint8_t RS2[26];//地址偏移6
 }MC_ConfigParam2_Struct_t;
 
 //姿态传感器数值

+ 1 - 1
User/Src/key_driver.c

@@ -1,6 +1,6 @@
 #include "key_driver.h"
 
-TrueOrFalse_Flag_Struct_t IsBreakTrig_Flag;
+TrueOrFalse_Flag_Struct_t IsBreakTrig_Flag = FALSE;
 TrueOrFalse_Flag_Struct_t IsGearSensorTrig_Flag = FALSE;//ąäËŮ´Ť¸ĐĆ÷ąęÖž
 
 Key_TypeDef Key_Break_Left;

+ 114 - 5
User/Src/light_driver.c

@@ -25,16 +25,125 @@ void LightDriver_Init(void)
   HAL_GPIO_Init(LIGHT_B_GPIO_Port, &GPIO_InitStruct);
 }
 
-void LightDriver_Process(MC_LightSwitch_Struct_t LightSwitchCode)
-{
-  if(LightSwitchCode == MC_LightSwitch_ON)
+void LightDriver_Process(MC_TailLight_Mode_Struct_t TailLight_Mode, TrueOrFalse_Flag_Struct_t IsBreakFlag, MC_LightSwitch_Struct_t LightSwitchCode)
+{	
+	//控制前灯
+	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);
+	}
+	
+	//控制尾灯
+	static uint16_t FlashTimeCnt = 0;
+	uint16_t OnTime = 8;
+	uint16_t Period = 15;
+	switch(TailLight_Mode)
+	{
+	  case MC_TAIL_LIGHT_MODE1://连接尾灯,开灯时低亮,刹车时高亮
+		{
+			if(IsBreakFlag == TRUE)//刹车时,高亮
+			{
+				HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
+				FlashTimeCnt = 0;
+			}
+			else//无刹车时,开灯低亮
+			{
+				if(LightSwitchCode == MC_LightSwitch_ON)
+				{
+					if(FlashTimeCnt < OnTime)
+					{
+						HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
+					}
+					else if(FlashTimeCnt < Period) //控制周期:15K / Period
+					{
+						HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
+					}
+					else
+					{
+						FlashTimeCnt = 0;
+					}
+					FlashTimeCnt++;
+				}
+				else if(LightSwitchCode == MC_LightSwitch_OFF)
+				{
+					HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
+					FlashTimeCnt = 0;
+				}
+			}
+			break;
+		}
+		case MC_TAIL_LIGHT_MODE2: default://连接尾灯,开灯时高亮,刹车时闪烁
+		{
+			if(IsBreakFlag == TRUE)//刹车时,快闪
+			{
+				if(FlashTimeCnt < 600)
+				{
+					HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
+				}
+				else if(FlashTimeCnt < 1200) //闪烁频率:15K / 1200 = 12.5Hz
+				{
+					HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
+				}
+				else
+				{
+					FlashTimeCnt = 0;
+				}
+				FlashTimeCnt++;
+			}
+			else//无刹车时,开灯亮
+			{
+				if(LightSwitchCode == MC_LightSwitch_ON)
+				{
+					HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
+				}
+				else if(LightSwitchCode == MC_LightSwitch_OFF)
+				{
+					HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
+				}
+				FlashTimeCnt = 0;
+			}	
+			break;
+		}
+		case MC_TAIL_LIGHT_MODE3://连接刹车灯,刹车高亮
+		{
+		  if(IsBreakFlag == TRUE)//刹车时,高亮
+			{
+				HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
+			}
+			else//无刹车时,关闭
+			{
+				HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
+			}
+			break;
+		}
+		case MC_TAIL_LIGHT_MODE4://连接刹车灯,刹车闪烁
+		{
+	  	if(IsBreakFlag == TRUE)//刹车时,快闪
+			{
+				if(FlashTimeCnt < 600)
+				{
+					HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_SET);
+				}
+				else if(FlashTimeCnt < 1200) //闪烁频率:15K / 1200 = 12.5Hz
+				{
+					HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
+				}
+				else
+				{
+					FlashTimeCnt = 0;
+				}
+				FlashTimeCnt++;
+			}
+			else//无刹车时,关闭
+			{
+				HAL_GPIO_WritePin(LIGHT_B_GPIO_Port, LIGHT_B_Pin, GPIO_PIN_RESET);
+				FlashTimeCnt = 0;
+			}	
+			break;
+		}
 	}
 }

+ 5 - 0
User/Src/tim.c

@@ -43,6 +43,8 @@
 #include "MC_Globals.h"
 #include "MC_FOC_Driver.h"
 #include "protect_check.h"
+#include "light_driver.h"
+#include "key_driver.h"
 
 /* USER CODE END 0 */
 
@@ -385,6 +387,9 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 	}
 	#endif
 	
+	//Light¿ØÖÆ
+	LightDriver_Process(MC_ConfigParam2.MC_TailLight_Mode, IsBreakTrig_Flag, MC_ControlCode.LightSwitch);
+	
 	//ADC²É¼¯·ÖƵ
 	ADC_PreCnt++;
 	if(ADC_PreCnt >= 5)

+ 2 - 1
User/Src/var.c

@@ -90,7 +90,8 @@ const MC_ConfigParam2_Struct_t MC_ConfigParam2_Default =
 {
   (int16_t)0,
 	(int16_t)0,
-	(MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE     //0x55-不支持,0x-AA支持
+	(MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE,     //0x55-不支持,0x-AA支持
+	(MC_TailLight_Mode_Struct_t)MC_TAIL_LIGHT_MODE2, 
 };
 
 //MC默认马达参数,占用16bytes

+ 5 - 1
修改说明.txt

@@ -343,4 +343,8 @@ V7.0.0_20210120
 1、基于V3.2.3_20201203修改波特率为250K;
 2、版本号:V7.0.0_20210120
 
-
+V7.0.0_20210120
+1、增加尾灯工作模式的配置,共设置4种模式,该程序工作于模式3;
+2、调整LightDriver_Process处理函数;
+3、IsBreakTrig_Flag初始化为FALSE,否则开机时会导致刹车灯亮1s左右;
+4、版本号:V7.0.0_20210120