246 lines
4.9 KiB
C
246 lines
4.9 KiB
C
|
|
#include "FM_GPIO.h"
|
|
|
|
#include "uart_dev.h"
|
|
|
|
void FM_GPIO_Init(void)
|
|
{
|
|
HD_GPIO_Init();
|
|
}
|
|
|
|
/**
|
|
* @brief 打开输出防反mos管
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void POW_FF_PCON_Open(void)
|
|
{
|
|
// HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_SET);
|
|
HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_RESET);
|
|
}
|
|
|
|
/**
|
|
* @brief 关闭输出防反mos管
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void POW_FF_PCON_Close(void)
|
|
{
|
|
// HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_RESET);
|
|
HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_SET);
|
|
}
|
|
|
|
/**
|
|
* @brief 打开输出mos管
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void POW_OUT_PCON_Open(void)
|
|
{
|
|
HAL_GPIO_WritePin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin, GPIO_PIN_SET);
|
|
}
|
|
|
|
/**
|
|
* @brief 关闭输出mos管
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void POW_OUT_PCON_Close(void)
|
|
{
|
|
HAL_GPIO_WritePin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin, GPIO_PIN_RESET);
|
|
}
|
|
|
|
/**
|
|
* @brief 读取输出控制引脚状态
|
|
* @param None
|
|
* @retval TRUE 打开
|
|
* FALSE 关闭
|
|
*/
|
|
BOOL readPOW_OUT_PCON_State(void)
|
|
{
|
|
if (HAL_GPIO_ReadPin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin)) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* @brief 打开LED灯
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void RUN_LEN_Open(void)
|
|
{
|
|
HAL_GPIO_WritePin(RUN_LED_GPIO_Port, RUN_LED_Pin, GPIO_PIN_SET);
|
|
}
|
|
|
|
/**
|
|
* @brief 关闭LED灯
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void RUN_LEN_Close(void)
|
|
{
|
|
HAL_GPIO_WritePin(RUN_LED_GPIO_Port, RUN_LED_Pin, GPIO_PIN_RESET);
|
|
}
|
|
|
|
/**
|
|
* @brief 翻转LED状态
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void RUN_LED(void)
|
|
{
|
|
HAL_GPIO_TogglePin(RUN_LED_GPIO_Port, RUN_LED_Pin);
|
|
}
|
|
|
|
/**
|
|
* @brief 打开mppt电感后的输出mos管
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
BOOL FFMOS_CON_read(void)
|
|
{
|
|
if (HAL_GPIO_ReadPin(FFMOS_CON_GPIO_Port, FFMOS_CON_Pin)) {
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/**
|
|
* @brief 打开mppt电感后的输出mos管
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void FFMOS_CON_Open(void)
|
|
{
|
|
HAL_GPIO_WritePin(FFMOS_CON_GPIO_Port, FFMOS_CON_Pin, GPIO_PIN_RESET);
|
|
}
|
|
|
|
/**
|
|
* @brief 关闭mppt电感后的输出mos管
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void FFMOS_CON_Close(void)
|
|
{
|
|
HAL_GPIO_WritePin(FFMOS_CON_GPIO_Port, FFMOS_CON_Pin, GPIO_PIN_SET);
|
|
}
|
|
|
|
/**
|
|
* @brief 下桥的mos管使能pwm输出
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void EN_PWMOUT_Eable(void)
|
|
{
|
|
HAL_GPIO_WritePin(EN_PWMOUT_GPIO_Port, EN_PWMOUT_Pin, GPIO_PIN_RESET);
|
|
}
|
|
|
|
/**
|
|
* @brief 下桥的mos管关闭pwm输出
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void EN_PWMOUT_Diseable(void)
|
|
{
|
|
HAL_GPIO_WritePin(EN_PWMOUT_GPIO_Port, EN_PWMOUT_Pin, GPIO_PIN_SET);
|
|
}
|
|
|
|
/**
|
|
* @brief 喂狗
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
void feedDog(void)
|
|
{
|
|
HAL_GPIO_WritePin(WDI_INPUT_GPIO_Port, WDI_INPUT_Pin, GPIO_PIN_SET);
|
|
HAL_GPIO_WritePin(WDI_INPUT_GPIO_Port, WDI_INPUT_Pin, GPIO_PIN_RESET);
|
|
}
|
|
|
|
/**
|
|
* @brief 判断过流状态
|
|
* @param None
|
|
* @retval
|
|
*/
|
|
BOOL readOverCurrState(void)
|
|
{
|
|
if (HAL_GPIO_ReadPin(DSG_PROT_GPIO_Port, DSG_PROT_Pin)) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* @brief 仅有充电控制器时,判断输出开关是否打开
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
BOOL readOnlyPowerOutputState(void)
|
|
{
|
|
// static volatile GPIO_PinState gpioTemp1, gpioTemp2, gpioTemp3;
|
|
// GPIO_PinState gpioTemp1, gpioTemp2, gpioTemp3;
|
|
// GPIO_PinState gpioTemp1, gpioTemp2;
|
|
|
|
// gpioTemp1 = HAL_GPIO_ReadPin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin);
|
|
// gpioTemp2 = HAL_GPIO_ReadPin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin);
|
|
// gpioTemp3 = HAL_GPIO_ReadPin(DSG_PROT_GPIO_Port, DSG_PROT_Pin);
|
|
|
|
// if (gpioTemp1 == GPIO_PIN_SET
|
|
// && gpioTemp2 == GPIO_PIN_SET
|
|
// // && gpioTemp3 == GPIO_PIN_SET) {
|
|
// ) {
|
|
// return TRUE;
|
|
// }
|
|
|
|
if (!HAL_GPIO_ReadPin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin)
|
|
&& HAL_GPIO_ReadPin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin)
|
|
&& !HAL_GPIO_ReadPin(DSG_PROT_GPIO_Port, DSG_PROT_Pin)
|
|
&& !HAL_GPIO_ReadPin(EXCHG_CURR_GPIO_Port, EXCHG_CURR_Pin)) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* @brief 带网关时,判断输出开关是否打开
|
|
* @param None
|
|
* @retval None
|
|
*/
|
|
BOOL readOutputState(void)
|
|
{
|
|
if (HAL_GPIO_ReadPin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin)
|
|
&& HAL_GPIO_ReadPin(DSG_PROT_GPIO_Port, DSG_PROT_Pin)) {
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* @brief GPIO外部中断的回调函数
|
|
* @param GPIO_Pin 引发外部中断的引脚
|
|
* @retval None
|
|
*/
|
|
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
|
{
|
|
if (GPIO_Pin == WORK_VOLT_INT_Pin) {
|
|
WORK_VOLT_Interrupt();
|
|
}
|
|
|
|
else if (GPIO_Pin == DSG_PROT_Pin) {
|
|
DSG_PROT_Interrupt();
|
|
}
|
|
|
|
else if (GPIO_Pin == EXCHG_PROT_Pin) {
|
|
EXCHG_PROT_Interrupt();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|