提交 ec098bd1 作者: wysheng

输出断路检测使用宏控制

上级 e61ba458
......@@ -341,6 +341,7 @@ void BmsPowerSet_B(EnumSwitchStatus Set)
BmsPower_B_Port->BSRRL = BmsPower_B_Pin;
}
#if TEST_OUT_SHORT
void ShortCirCheck(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
......@@ -353,6 +354,15 @@ void ShortCirCheck(void)
RCC_AHB1PeriphClockCmd(ShortCirCheck_RCC, ENABLE);
GPIO_Init(ShortCirCheck_Port, &GPIO_InitStructure);
GPIO_ResetBits(ShortCirCheck_Port, ShortCirCheck_Pin);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = ShortCirCheckGet_Pin;
RCC_AHB1PeriphClockCmd(ShortCirCheckGet_RCC, ENABLE);
GPIO_Init(ShortCirCheckGet_Port, &GPIO_InitStructure);
GPIO_ResetBits(ShortCirCheckGet_Port, ShortCirCheckGet_Pin);
}
void ShortCirCheckSet(EnumSwitchStatus Set)
......@@ -360,9 +370,17 @@ void ShortCirCheckSet(EnumSwitchStatus Set)
if(eSwSta_Off == Set)
ShortCirCheck_Port->BSRRH = ShortCirCheck_Pin;
else
BmsPower_B_Port->BSRRL = ShortCirCheck_Pin;
ShortCirCheck_Port->BSRRL = ShortCirCheck_Pin;
}
EnumSwitchStatus ShortCirCheckGet(void)
{
if(Bit_RESET == GPIO_ReadInputDataBit(ShortCirCheckGet_Port, ShortCirCheckGet_Pin))
return eSwSta_On;
return eSwSta_Off;
}
#endif
static void DCOutDelayHandle_B(void const *Param)
{
DcOutPos_B_Port->BSRRL = DcOutPos_B_Pin;
......@@ -1111,7 +1129,7 @@ EnumSwitchStatus GunStatusGet_B(void)
void DCModuleRelayChkInit(void)
void DCModuleRelayOutChkInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
......
......@@ -4,6 +4,8 @@
#define __DRV_BOARDIO_H__
#include "Global.h"
#define TEST_OUT_SHORT 0 //输出短路测试
#if 1
//A枪BMS供电输出控制
......@@ -63,10 +65,17 @@
#define BmsPower_B_Port GPIOF
#define BmsPower_B_RCC RCC_AHB1Periph_GPIOF
#if TEST_OUT_SHORT
#define ShortCirCheck_Pin GPIO_Pin_3
#define ShortCirCheck_Port GPIOF
#define ShortCirCheck_RCC RCC_AHB1Periph_GPIOF
#define ShortCirCheckGet_Pin GPIO_Pin_4
#define ShortCirCheckGet_Port GPIOD
#define ShortCirCheckGet_RCC RCC_AHB1Periph_GPIOD
#endif
//A枪归位状态
#define DcOutChkPos_B_Pin GPIO_Pin_5
#define DcOutChkPos_B_Port GPIOE
......@@ -302,8 +311,13 @@ extern void FaultLedInit_B(void);
extern void FaultLedSet_B(EnumSwitchStatus Set);
extern void IdleLedInit_B(void);
extern void IdleLedSet_B(EnumSwitchStatus Set);
#if TEST_OUT_SHORT
extern void ShortCirCheck(void);
extern void ShortCirCheckSet(EnumSwitchStatus Set);
extern EnumSwitchStatus ShortCirCheckGet(void);
#endif
extern void FanInit(void);
extern void FanInit_Top(void);
......@@ -324,7 +338,6 @@ extern void FanSetExt_Top(EnumSwitchStatus Set);
//extern EnumSwitchStatus DcOutGet_Uni(void);
//extern void DehumidifierInit(void);
//extern void DehumidifierSet(EnumSwitchStatus Set);
extern void EmergenceInit(void);
extern EnumSwitchStatus EmergenceGet(void);
......@@ -344,14 +357,18 @@ extern void LockSet_AB(EnumSwitchStatus Set);
extern EnumSwitchStatus LockGet_AB(void);
extern void RunLedInit(void);
extern void RunLedSet(EnumSwitchStatus Set);
extern void ShortCirCheckSet(EnumSwitchStatus Set);
extern EnumSwitchStatus ACContactorGet(void);
extern EnumSwitchStatus ACContactorSta;
extern void SystemReboot(void);
extern void ACContactorInit(void);
void GunStatusChkInit(void);
EnumSwitchStatus GunStatusGet(void);
EnumSwitchStatus GunStatusGet_B(void);
void DCModuleRelayOutChkInit(void);
#endif
......@@ -67,7 +67,9 @@ void ChgProShakeHand(StructChargeCtrl *pChargeCtrl)
BmsCanInit();
osDelay(20);
#if TEST_OUT_SHORT
u8 ShortCircuitCkeck = 0 ;
#endif
CHM_Send();
CHM_SendTick = GetSystemTick();
......@@ -100,11 +102,12 @@ void ChgProShakeHand(StructChargeCtrl *pChargeCtrl)
}
else
{
/*if(ShortCircuitCkeck == 0 )
#if TEST_OUT_SHORT
if(ShortCircuitCkeck == 0 )
{
ShortCirCheckSet(eSwSta_On);
osDelay(1000);
if(eSwSta_On==DcOutNegGet_Uni())
if(eSwSta_On==ShortCirCheckGet())
{
ShortCircuitCkeck = 1;
ShortCirCheckSet(eSwSta_Off);
......@@ -118,7 +121,8 @@ void ChgProShakeHand(StructChargeCtrl *pChargeCtrl)
TCUCurChgRecd.TCUChgStopType = 0x22;
}
}
else*/
else
#endif
{
pChargeCtrl->CurProcess = eChgPro_ImdCheck;
pChargeCtrl->Param = 0;
......
......@@ -55,7 +55,9 @@ void ChgProShakeHand_B(StructChargeCtrl_B *pChargeCtrl)
BhmMsg_B.Valid = 0;
BhmMsg_B.RecvTick = GetSystemTick();
BHM_FirstRecv = 0;
#if TEST_OUT_SHORT
u8 ShortCircuitCkeck = 0;
#endif
ChargeTimerSet_B(eSwSta_Off);
CleanChgTimeCnt_B();
BmsPowerSet_B(eSwSta_On);
......@@ -101,13 +103,13 @@ void ChgProShakeHand_B(StructChargeCtrl_B *pChargeCtrl)
}
else
{
/*if(ShortCircuitCkeck == 0 )
#if TEST_OUT_SHORT
if(ShortCircuitCkeck == 0 )
{
ShortCirCheckSet(eSwSta_On);
osDelay(1000);
if(eSwSta_On == DcOutNegGet_Uni())
if(eSwSta_On == ShortCirCheckGet())
{
ShortCircuitCkeck = 1;
ShortCirCheckSet(eSwSta_Off);
......@@ -121,7 +123,8 @@ void ChgProShakeHand_B(StructChargeCtrl_B *pChargeCtrl)
TCUCurChgRecd_B.TCUChgStopType = 0x22;
}
}
else*/
else
#endif
{
pChargeCtrl->CurProcess = eChgPro_B_ImdCheck;
pChargeCtrl->Param = 0;
......
......@@ -159,6 +159,7 @@ void Thd_Charge(void const *parameter)
//DehumidifierInit();
//DrainResistInit();//DrainResistInit_B();
ACContactorInit(); //交流接触器
GunStatusChkInit();
LockInit(); //LockInit_B();
EmergenceInit();
DoorChkInit();
......@@ -171,8 +172,10 @@ void Thd_Charge(void const *parameter)
BmsPowerInit(); //BmsPowerInit_B();
BmsCommInit(); //BmsCommInit_B();
ShortCirCheck();
#if TEST_OUT_SHORT
ShortCirCheck();
#endif
/* Create a Timer */
osTimerDef(ChargeTimer, ChargeTimeCountCtrl);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论