/** ****************************************************************************** * File Name : gpio.c * Description : This file provides code for the configuration * of all used GPIO pins. ****************************************************************************** * @attention * *

© Copyright (c) 2023 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License. You may obtain a copy of the License at: * www.st.com/SLA0044 * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "gpio.h" /* USER CODE BEGIN 0 */ #include "rtc.h" //uint8_t is_Relay1_First; //no used /* USER CODE END 0 */ /*----------------------------------------------------------------------------*/ /* Configure GPIO */ /*----------------------------------------------------------------------------*/ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /** Configure pins as * Analog * Input * Output * EVENT_OUT * EXTI */ void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOG_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(OUT_MeterIC_Reset_GPIO_Port, OUT_MeterIC_Reset_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOE, OUT_BLE_RESET_Pin|NoneUse_Pin65_GPIO_PE12_Pin|Meter_DIR_Pin|OUT_SPI1_CS_Pin |OUT_StateE_Pin|OUT_LED_Breathe_Pin, GPIO_PIN_RESET); #ifdef RELAY_COMMON_GPIO //Relay: PC9 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, OUT_Tilt_DrvLeakage_Pin|NoneUse_Pin28_GPIO_PC2_Pin|OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin |LED_G_Ctr_Pin|/***/GPIO_PIN_9/***/|OUT_1998_Pin|OUT_Meter_485_RE_Pin, GPIO_PIN_RESET); #else /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, OUT_Tilt_DrvLeakage_Pin|NoneUse_Pin28_GPIO_PC2_Pin|OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin |LED_G_Ctr_Pin|OUT_RelayDrv_L1_Pin|OUT_1998_Pin|OUT_Meter_485_RE_Pin, GPIO_PIN_RESET); #endif #ifdef RELAY_COMMON_GPIO //Relay: PA8, PA9, PA10 HAL_GPIO_WritePin(GPIOA, RS485_SW_Pin|BLE_SW_Pin|NoneUse_Pin43_GPIO_PA7_Pin|/***/GPIO_PIN_8/***/ |/***/GPIO_PIN_9/***/|/***/GPIO_PIN_10/***/, GPIO_PIN_RESET); #else /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, RS485_SW_Pin|BLE_SW_Pin|NoneUse_Pin43_GPIO_PA7_Pin|OUT_RelayHold_L1_Pin |OUT_RelayDrv_L2_Pin|OUT_RelayHold_L2_Pin, GPIO_PIN_RESET); #endif /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, LED_B_Ctr_Pin|M_LED_B1_Pin|NoneUse_Pin48_GPIO_PB2_Pin|NoneUse_Pin69_GPIO_PB10_Pin |NoneUse_Pin74_GPIO_PB13_Pin|OUT_Leak_Test_Pin|M_LED_G1_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOF, OUT_LOCK_L_Pin|OUT_UNLOCK_L_Pin|NoneUse_Pin54_GPIO_PF14_Pin|NoneUse_Pin55_GPIO_PF15_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOG, OUT_Tilt_Test_Pin|OUT_BLE_DSR_Pin|OUT_SocketE_Drv_Pin|OUT_SocketE_Hold_Pin |OUT_Meter_Power_Pin|OUT_RFID_Reset_Pin|NoneUse_Pin126_GPIO_PG11_Pin|OUT_TrigLeakage_Pin |NoneUse_Pin128_GPIO_PG13_Pin|LIN_PWM_SW_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, OUT_Speaker_Pin|NoneUse_Pin86_GPIO_PD15_Pin|NoneUse_Pin114_GPIO_PD0_Pin|NoneUse_Pin115_GPIO_PD1_Pin |OUT_USB_DriveBus_Pin|OUT_Meter_485_DE_Pin, GPIO_PIN_RESET); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = OUT_MeterIC_Reset_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(OUT_MeterIC_Reset_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PEPin PEPin PEPin */ GPIO_InitStruct.Pin = OUT_BLE_RESET_Pin|NoneUse_Pin65_GPIO_PE12_Pin|Meter_DIR_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pins : PEPin PEPin */ GPIO_InitStruct.Pin = IN_Tilt_ActOn_Pin|IN_Grid_Groundding_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pins : PCPin PCPin */ GPIO_InitStruct.Pin = OUT_Tilt_DrvLeakage_Pin|NoneUse_Pin28_GPIO_PC2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /*Configure GPIO pins : PFPin PFPin */ GPIO_InitStruct.Pin = IN_MEM_Erase_Pin|IN_LOCK_Status_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); /*Configure GPIO pins : PCPin PCPin PCPin PCPin PCPin PCPin */ #ifdef RELAY_COMMON_GPIO GPIO_InitStruct.Pin = OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin|LED_G_Ctr_Pin|/***/GPIO_PIN_9/***/ |OUT_1998_Pin|OUT_Meter_485_RE_Pin; #else GPIO_InitStruct.Pin = OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin|LED_G_Ctr_Pin|OUT_RelayDrv_L1_Pin |OUT_1998_Pin|OUT_Meter_485_RE_Pin; #endif GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /*Configure GPIO pins : PAPin PAPin PAPin PAPin PAPin */ #ifdef RELAY_COMMON_GPIO GPIO_InitStruct.Pin = RS485_SW_Pin|BLE_SW_Pin|/***/GPIO_PIN_8/***/|/***/GPIO_PIN_9/***/ |/***/GPIO_PIN_10/***/; #else GPIO_InitStruct.Pin = RS485_SW_Pin|BLE_SW_Pin|OUT_RelayHold_L1_Pin|OUT_RelayDrv_L2_Pin |OUT_RelayHold_L2_Pin; #endif GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = NoneUse_Pin43_GPIO_PA7_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(NoneUse_Pin43_GPIO_PA7_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PBPin PBPin PBPin PBPin */ GPIO_InitStruct.Pin = LED_B_Ctr_Pin|M_LED_B1_Pin|OUT_Leak_Test_Pin|M_LED_G1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pins : PBPin PBPin PBPin */ GPIO_InitStruct.Pin = NoneUse_Pin48_GPIO_PB2_Pin|NoneUse_Pin69_GPIO_PB10_Pin|NoneUse_Pin74_GPIO_PB13_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = OUT_LOCK_L_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(OUT_LOCK_L_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PFPin PFPin PFPin */ GPIO_InitStruct.Pin = OUT_UNLOCK_L_Pin|NoneUse_Pin54_GPIO_PF14_Pin|NoneUse_Pin55_GPIO_PF15_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); /*Configure GPIO pins : PGPin PGPin PGPin PGPin PGPin PGPin PGPin */ GPIO_InitStruct.Pin = OUT_Tilt_Test_Pin|OUT_SocketE_Drv_Pin|OUT_SocketE_Hold_Pin|OUT_Meter_Power_Pin |NoneUse_Pin126_GPIO_PG11_Pin|OUT_TrigLeakage_Pin|NoneUse_Pin128_GPIO_PG13_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); /*Configure GPIO pins : PGPin PGPin PGPin PGPin */ GPIO_InitStruct.Pin = IN_GridType_Select_Pin|IN_BLE_DTR_Pin|IN_RFID_ICC_Pin|IN_USB_OC_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); /*Configure GPIO pins : PEPin PEPin PEPin PEPin */ GPIO_InitStruct.Pin = IN_AC_Current_Set4_Pin|IN_AC_Current_Set3_Pin|IN_AC_Current_Set2_Pin|IN_AC_Current_Set1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pins : PEPin PEPin PEPin */ GPIO_InitStruct.Pin = OUT_SPI1_CS_Pin|OUT_StateE_Pin|OUT_LED_Breathe_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /*Configure GPIO pins : PBPin PBPin */ GPIO_InitStruct.Pin = IN_Relay_b_Contact_Pin|IN_GFCI_Reset_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = OUT_Speaker_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(OUT_Speaker_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PDPin PDPin */ GPIO_InitStruct.Pin = IN_Emergency_Pin|IN_BTN_ModeSw_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = IN_SocketE_Detect_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; #ifdef MODIFY_SOCKET_E_DETECT_PIN GPIO_InitStruct.Pull = GPIO_PULLUP; #else GPIO_InitStruct.Pull = GPIO_PULLDOWN; #endif HAL_GPIO_Init(IN_SocketE_Detect_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : PDPin PDPin PDPin PDPin PDPin */ GPIO_InitStruct.Pin = NoneUse_Pin86_GPIO_PD15_Pin|NoneUse_Pin114_GPIO_PD0_Pin|NoneUse_Pin115_GPIO_PD1_Pin|OUT_USB_DriveBus_Pin |OUT_Meter_485_DE_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); /*Configure GPIO pins : PGPin PGPin PGPin */ GPIO_InitStruct.Pin = OUT_BLE_DSR_Pin|OUT_RFID_Reset_Pin|LIN_PWM_SW_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); /*Configure GPIO pins : PCPin PCPin PCPin */ GPIO_InitStruct.Pin = IN_Leak_Error_Pin|IN_Leak_AC_Pin|IN_Leak_DC_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = IN_1998_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(IN_1998_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = IN_CCS_Proximity_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; //#ifdef FUNC_TEST_SET_CSU_MOUNT_PIN_NOPULL // GPIO_InitStruct.Pull = GPIO_NOPULL; //#else GPIO_InitStruct.Pull = GPIO_PULLUP; //#endif HAL_GPIO_Init(IN_CCS_Proximity_GPIO_Port, &GPIO_InitStruct); #ifndef FUNC_ENABLE_USART1_RFID /*Configure GPIO pins : PB6 PB7 */ GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF7_USART1; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); #endif } /* USER CODE BEGIN 2 */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { #ifdef DISABLE_METER_IC_IRQ_INTERRUPT return; #else switch(GPIO_Pin) { case GPIO_PIN_4: /* TODO: 1. Meter IC IRQ0 interrupt */ DEBUG_INFO("Meter IC IRQ0 interrupt...\r\n"); break; case GPIO_PIN_5: /* TODO: 1. Meter IC IRQ1 interrupt */ DEBUG_INFO("Meter IC IRQ1 interrupt...\r\n"); break; default: break; } #endif } void Relay_Action_Set(uint8_t action) { switch(action) { case GPIO_RELAY1_ACTION_ON: RELAY1_SET_DRIV(1); RELAY1_SET_HOLD(0); DEBUG_INFO("#Relay-1 ON.\r\n"); timerEnable(TIMER_IDX_RELAY_1, 100); //HAL_Delay(1); break; case GPIO_RELAY1_ACTION_HOLD: //#ifndef TEST_RELAY_DRIVE_WITHOUT_HOLD RELAY1_SET_HOLD(1); RELAY1_SET_DRIV(0); DEBUG_INFO("#Relay-1 Hold.\r\n"); //#endif break; case GPIO_RELAY2_ACTION_ON: RELAY2_SET_DRIV(1); RELAY2_SET_HOLD(0); DEBUG_INFO("#Relay-2 ON.\r\n"); timerEnable(TIMER_IDX_RELAY_2, 100); //HAL_Delay(1); break; case GPIO_RELAY2_ACTION_HOLD: //#ifndef TEST_RELAY_DRIVE_WITHOUT_HOLD RELAY2_SET_HOLD(1); RELAY2_SET_DRIV(0); DEBUG_INFO("#Relay-2 hold.\r\n"); //#endif break; case GPIO_RELAY1_ACTION_OFF: RELAY1_SET_DRIV(0); RELAY1_SET_HOLD(0); DEBUG_INFO("#Relay-1 OFF.\r\n"); break; case GPIO_RELAY2_ACTION_OFF: RELAY2_SET_DRIV(0); RELAY2_SET_HOLD(0); DEBUG_INFO("#Relay-2 OFF.\r\n"); break; default: RELAY1_SET_DRIV(0); RELAY1_SET_HOLD(0); RELAY2_SET_DRIV(0); RELAY2_SET_HOLD(0); break; } } uint8_t Relay1_Action_Get(void) { uint8_t result = GPIO_RELAY1_ACTION_UNKNOW; if((RELAY1_GET_DRIV == GPIO_PIN_RESET) && (RELAY1_GET_HOLD == GPIO_PIN_RESET)) { result = GPIO_RELAY1_ACTION_OFF; } else if((RELAY1_GET_DRIV == GPIO_PIN_SET) && (RELAY1_GET_HOLD == GPIO_PIN_RESET)) { result = GPIO_RELAY1_ACTION_ON; } else if((RELAY1_GET_DRIV == GPIO_PIN_RESET) && (RELAY1_GET_HOLD == GPIO_PIN_SET)) { result = GPIO_RELAY1_ACTION_HOLD; } return result; } uint8_t Relay2_Action_Get(void) { uint8_t result = GPIO_RELAY2_ACTION_UNKNOW; if((RELAY2_GET_DRIV == GPIO_PIN_RESET) && (RELAY2_GET_HOLD == GPIO_PIN_RESET)) { result = GPIO_RELAY2_ACTION_OFF; } else if((RELAY2_GET_DRIV == GPIO_PIN_SET) && (RELAY2_GET_HOLD == GPIO_PIN_RESET)) { result = GPIO_RELAY2_ACTION_ON; } else if((RELAY2_GET_DRIV == GPIO_PIN_RESET) && (RELAY2_GET_HOLD == GPIO_PIN_SET)) { result = GPIO_RELAY2_ACTION_HOLD; } return result; } #ifdef FUNC_OUTP_TYPE_E void SE_Relay_Action_Set(uint8_t action) { switch(action) { case GPIO_SE_RELAY1_ACTION_ON: RELAY_SE_SET_DRIV(1); RELAY_SE_SET_HOLD(0); DEBUG_INFO("SocketE Relay-1 ON.\r\n"); timerEnable(TIMER_IDX_SE_RELAY_1, 100); //HAL_Delay(1); break; case GPIO_SE_RELAY1_ACTION_HOLD: //#ifndef TEST_RELAY_DRIVE_WITHOUT_HOLD RELAY_SE_SET_HOLD(1); RELAY_SE_SET_DRIV(0); DEBUG_INFO("SocketE Relay-1 Hold.\r\n"); //#endif break; case GPIO_SE_RELAY1_ACTION_OFF: RELAY_SE_SET_DRIV(0); RELAY_SE_SET_HOLD(0); DEBUG_INFO("SocketE Relay-1 OFF.\r\n"); break; default: RELAY_SE_SET_DRIV(0); RELAY_SE_SET_HOLD(0); break; } } uint8_t SE_Relay1_Action_Get(void) { uint8_t result = GPIO_SE_RELAY1_ACTION_UNKNOW; if((RELAY_SE_GET_DRIV == GPIO_PIN_RESET) && (RELAY_SE_GET_HOLD == GPIO_PIN_RESET) ) { result = GPIO_SE_RELAY_ACTION_OFF; } else if((RELAY_SE_GET_DRIV == GPIO_PIN_SET) && (RELAY_SE_GET_HOLD == GPIO_PIN_RESET)) { result = GPIO_SE_RELAY_ACTION_ON; } else if((RELAY_SE_GET_DRIV == GPIO_PIN_RESET) && (RELAY_SE_GET_HOLD == GPIO_PIN_SET)) { result = GPIO_SE_RELAY_ACTION_HOLD; } return result; } #endif //FUNC_OUTP_TYPE_E //-------------------------------------------------------------------------------- void getGridTypeSwitchSetting(void) // check Grounding System is LL or LN { #ifdef ROTATE_SWITCH_HARDCODE Charger.GroundingSystem = (HC_SWITCH_1_CONN_TYPE_VAL ? 0 : 1); #else Charger.GroundingSystem = (HAL_GPIO_ReadPin(IN_GridType_Select_GPIO_Port, IN_GridType_Select_Pin) ? 0 : 1); #endif if (Charger.GroundingSystem == GROUNGING_SYSTEM_LL) { DEBUG_INFO("Grounding System is set L-L (0)\r\n"); //Switch-OFF(0) } else { DEBUG_INFO("Grounding System is set L-N (1)\r\n"); //Switch-ON(1) } #ifdef ROTATE_SWITCH_HARDCODE Charger.GroundingDetect = (HC_SWITCH_2_GROUND_SYS ? 1 : 0); #else Charger.GroundingDetect = (HAL_GPIO_ReadPin(IN_Grid_Groundding_GPIO_Port, IN_Grid_Groundding_Pin) ? 1 : 0); #endif if (Charger.GroundingDetect == ON) { DEBUG_INFO("Grounding Detect ON (0: TT-TN)\r\n"); //Switch-OFF(0) } else { DEBUG_INFO("Grounding Detect OFF (1: IT)\r\n"); //Switch-ON(1) } } /* USER CODE END 2 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/