#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); } /** * @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); } /** * @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; 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)) { // 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(); // } }