gpio.c 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519
  1. /**
  2. ******************************************************************************
  3. * File Name : gpio.c
  4. * Description : This file provides code for the configuration
  5. * of all used GPIO pins.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2023 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under Ultimate Liberty license
  13. * SLA0044, the "License"; You may not use this file except in compliance with
  14. * the License. You may obtain a copy of the License at:
  15. * www.st.com/SLA0044
  16. *
  17. ******************************************************************************
  18. */
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "gpio.h"
  21. /* USER CODE BEGIN 0 */
  22. #include "rtc.h"
  23. //uint8_t is_Relay1_First; //no used
  24. /* USER CODE END 0 */
  25. /*----------------------------------------------------------------------------*/
  26. /* Configure GPIO */
  27. /*----------------------------------------------------------------------------*/
  28. /* USER CODE BEGIN 1 */
  29. /* USER CODE END 1 */
  30. /** Configure pins as
  31. * Analog
  32. * Input
  33. * Output
  34. * EVENT_OUT
  35. * EXTI
  36. */
  37. void MX_GPIO_Init(void)
  38. {
  39. GPIO_InitTypeDef GPIO_InitStruct = {0};
  40. /* GPIO Ports Clock Enable */
  41. __HAL_RCC_GPIOE_CLK_ENABLE();
  42. __HAL_RCC_GPIOC_CLK_ENABLE();
  43. __HAL_RCC_GPIOF_CLK_ENABLE();
  44. __HAL_RCC_GPIOH_CLK_ENABLE();
  45. __HAL_RCC_GPIOA_CLK_ENABLE();
  46. __HAL_RCC_GPIOB_CLK_ENABLE();
  47. __HAL_RCC_GPIOG_CLK_ENABLE();
  48. __HAL_RCC_GPIOD_CLK_ENABLE();
  49. /*Configure GPIO pin Output Level */
  50. HAL_GPIO_WritePin(OUT_MeterIC_Reset_GPIO_Port, OUT_MeterIC_Reset_Pin, GPIO_PIN_SET);
  51. /*Configure GPIO pin Output Level */
  52. HAL_GPIO_WritePin(GPIOE, OUT_BLE_RESET_Pin|NoneUse_Pin65_GPIO_PE12_Pin|Meter_DIR_Pin|OUT_SPI1_CS_Pin
  53. |OUT_StateE_Pin|OUT_LED_Breathe_Pin, GPIO_PIN_RESET);
  54. #ifdef RELAY_COMMON_GPIO
  55. //Relay: PC9
  56. /*Configure GPIO pin Output Level */
  57. HAL_GPIO_WritePin(GPIOC, OUT_Tilt_DrvLeakage_Pin|NoneUse_Pin28_GPIO_PC2_Pin|OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin
  58. |LED_G_Ctr_Pin|/***/GPIO_PIN_9/***/|OUT_1998_Pin|OUT_Meter_485_RE_Pin, GPIO_PIN_RESET);
  59. #else
  60. /*Configure GPIO pin Output Level */
  61. HAL_GPIO_WritePin(GPIOC, OUT_Tilt_DrvLeakage_Pin|NoneUse_Pin28_GPIO_PC2_Pin|OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin
  62. |LED_G_Ctr_Pin|OUT_RelayDrv_L1_Pin|OUT_1998_Pin|OUT_Meter_485_RE_Pin, GPIO_PIN_RESET);
  63. #endif
  64. #ifdef RELAY_COMMON_GPIO
  65. //Relay: PA8, PA9, PA10
  66. HAL_GPIO_WritePin(GPIOA, RS485_SW_Pin|BLE_SW_Pin|NoneUse_Pin43_GPIO_PA7_Pin|/***/GPIO_PIN_8/***/
  67. |/***/GPIO_PIN_9/***/|/***/GPIO_PIN_10/***/, GPIO_PIN_RESET);
  68. #else
  69. /*Configure GPIO pin Output Level */
  70. HAL_GPIO_WritePin(GPIOA, RS485_SW_Pin|BLE_SW_Pin|NoneUse_Pin43_GPIO_PA7_Pin|OUT_RelayHold_L1_Pin
  71. |OUT_RelayDrv_L2_Pin|OUT_RelayHold_L2_Pin, GPIO_PIN_RESET);
  72. #endif
  73. /*Configure GPIO pin Output Level */
  74. HAL_GPIO_WritePin(GPIOB, LED_B_Ctr_Pin|M_LED_B1_Pin|NoneUse_Pin48_GPIO_PB2_Pin|NoneUse_Pin69_GPIO_PB10_Pin
  75. |NoneUse_Pin74_GPIO_PB13_Pin|OUT_Leak_Test_Pin|M_LED_G1_Pin, GPIO_PIN_RESET);
  76. /*Configure GPIO pin Output Level */
  77. 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);
  78. /*Configure GPIO pin Output Level */
  79. HAL_GPIO_WritePin(GPIOG, OUT_Tilt_Test_Pin|OUT_BLE_DSR_Pin|OUT_SocketE_Drv_Pin|OUT_SocketE_Hold_Pin
  80. |OUT_Meter_Power_Pin|OUT_RFID_Reset_Pin|NoneUse_Pin126_GPIO_PG11_Pin|OUT_TrigLeakage_Pin
  81. |NoneUse_Pin128_GPIO_PG13_Pin|LIN_PWM_SW_Pin, GPIO_PIN_RESET);
  82. /*Configure GPIO pin Output Level */
  83. HAL_GPIO_WritePin(GPIOD, OUT_Speaker_Pin|NoneUse_Pin86_GPIO_PD15_Pin|NoneUse_Pin114_GPIO_PD0_Pin|NoneUse_Pin115_GPIO_PD1_Pin
  84. |OUT_USB_DriveBus_Pin|OUT_Meter_485_DE_Pin, GPIO_PIN_RESET);
  85. /*Configure GPIO pin : PtPin */
  86. GPIO_InitStruct.Pin = OUT_MeterIC_Reset_Pin;
  87. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  88. GPIO_InitStruct.Pull = GPIO_PULLUP;
  89. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  90. HAL_GPIO_Init(OUT_MeterIC_Reset_GPIO_Port, &GPIO_InitStruct);
  91. /*Configure GPIO pins : PEPin PEPin PEPin */
  92. GPIO_InitStruct.Pin = OUT_BLE_RESET_Pin|NoneUse_Pin65_GPIO_PE12_Pin|Meter_DIR_Pin;
  93. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  94. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  95. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  96. HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  97. /*Configure GPIO pins : PEPin PEPin */
  98. GPIO_InitStruct.Pin = IN_Tilt_ActOn_Pin|IN_Grid_Groundding_Pin;
  99. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  100. GPIO_InitStruct.Pull = GPIO_NOPULL;
  101. HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  102. /*Configure GPIO pins : PCPin PCPin */
  103. GPIO_InitStruct.Pin = OUT_Tilt_DrvLeakage_Pin|NoneUse_Pin28_GPIO_PC2_Pin;
  104. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  105. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  106. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  107. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  108. /*Configure GPIO pins : PFPin PFPin */
  109. GPIO_InitStruct.Pin = IN_MEM_Erase_Pin|IN_LOCK_Status_Pin;
  110. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  111. GPIO_InitStruct.Pull = GPIO_NOPULL;
  112. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  113. /*Configure GPIO pins : PCPin PCPin PCPin PCPin
  114. PCPin PCPin */
  115. #ifdef RELAY_COMMON_GPIO
  116. GPIO_InitStruct.Pin = OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin|LED_G_Ctr_Pin|/***/GPIO_PIN_9/***/
  117. |OUT_1998_Pin|OUT_Meter_485_RE_Pin;
  118. #else
  119. GPIO_InitStruct.Pin = OutpowerCtr_LED24V_Pin|LED_R_Ctr_Pin|LED_G_Ctr_Pin|OUT_RelayDrv_L1_Pin
  120. |OUT_1998_Pin|OUT_Meter_485_RE_Pin;
  121. #endif
  122. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  123. GPIO_InitStruct.Pull = GPIO_NOPULL;
  124. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  125. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  126. /*Configure GPIO pins : PAPin PAPin PAPin PAPin
  127. PAPin */
  128. #ifdef RELAY_COMMON_GPIO
  129. GPIO_InitStruct.Pin = RS485_SW_Pin|BLE_SW_Pin|/***/GPIO_PIN_8/***/|/***/GPIO_PIN_9/***/
  130. |/***/GPIO_PIN_10/***/;
  131. #else
  132. GPIO_InitStruct.Pin = RS485_SW_Pin|BLE_SW_Pin|OUT_RelayHold_L1_Pin|OUT_RelayDrv_L2_Pin
  133. |OUT_RelayHold_L2_Pin;
  134. #endif
  135. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  136. GPIO_InitStruct.Pull = GPIO_NOPULL;
  137. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  138. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  139. /*Configure GPIO pin : PtPin */
  140. GPIO_InitStruct.Pin = NoneUse_Pin43_GPIO_PA7_Pin;
  141. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  142. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  143. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  144. HAL_GPIO_Init(NoneUse_Pin43_GPIO_PA7_GPIO_Port, &GPIO_InitStruct);
  145. /*Configure GPIO pins : PBPin PBPin PBPin PBPin */
  146. GPIO_InitStruct.Pin = LED_B_Ctr_Pin|M_LED_B1_Pin|OUT_Leak_Test_Pin|M_LED_G1_Pin;
  147. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  148. GPIO_InitStruct.Pull = GPIO_NOPULL;
  149. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  150. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  151. /*Configure GPIO pins : PBPin PBPin PBPin */
  152. GPIO_InitStruct.Pin = NoneUse_Pin48_GPIO_PB2_Pin|NoneUse_Pin69_GPIO_PB10_Pin|NoneUse_Pin74_GPIO_PB13_Pin;
  153. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  154. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  155. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  156. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  157. /*Configure GPIO pin : PtPin */
  158. GPIO_InitStruct.Pin = OUT_LOCK_L_Pin;
  159. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  160. GPIO_InitStruct.Pull = GPIO_NOPULL;
  161. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  162. HAL_GPIO_Init(OUT_LOCK_L_GPIO_Port, &GPIO_InitStruct);
  163. /*Configure GPIO pins : PFPin PFPin PFPin */
  164. GPIO_InitStruct.Pin = OUT_UNLOCK_L_Pin|NoneUse_Pin54_GPIO_PF14_Pin|NoneUse_Pin55_GPIO_PF15_Pin;
  165. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  166. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  167. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  168. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  169. /*Configure GPIO pins : PGPin PGPin PGPin PGPin
  170. PGPin PGPin PGPin */
  171. GPIO_InitStruct.Pin = OUT_Tilt_Test_Pin|OUT_SocketE_Drv_Pin|OUT_SocketE_Hold_Pin|OUT_Meter_Power_Pin
  172. |NoneUse_Pin126_GPIO_PG11_Pin|OUT_TrigLeakage_Pin|NoneUse_Pin128_GPIO_PG13_Pin;
  173. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  174. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  175. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  176. HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
  177. /*Configure GPIO pins : PGPin PGPin PGPin PGPin */
  178. GPIO_InitStruct.Pin = IN_GridType_Select_Pin|IN_BLE_DTR_Pin|IN_RFID_ICC_Pin|IN_USB_OC_Pin;
  179. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  180. GPIO_InitStruct.Pull = GPIO_NOPULL;
  181. HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
  182. /*Configure GPIO pins : PEPin PEPin PEPin PEPin */
  183. GPIO_InitStruct.Pin = IN_AC_Current_Set4_Pin|IN_AC_Current_Set3_Pin|IN_AC_Current_Set2_Pin|IN_AC_Current_Set1_Pin;
  184. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  185. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  186. HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  187. /*Configure GPIO pins : PEPin PEPin PEPin */
  188. GPIO_InitStruct.Pin = OUT_SPI1_CS_Pin|OUT_StateE_Pin|OUT_LED_Breathe_Pin;
  189. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  190. GPIO_InitStruct.Pull = GPIO_NOPULL;
  191. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  192. HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  193. /*Configure GPIO pins : PBPin PBPin */
  194. GPIO_InitStruct.Pin = IN_Relay_b_Contact_Pin|IN_GFCI_Reset_Pin;
  195. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  196. GPIO_InitStruct.Pull = GPIO_NOPULL;
  197. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  198. /*Configure GPIO pin : PtPin */
  199. GPIO_InitStruct.Pin = OUT_Speaker_Pin;
  200. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  201. GPIO_InitStruct.Pull = GPIO_NOPULL;
  202. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  203. HAL_GPIO_Init(OUT_Speaker_GPIO_Port, &GPIO_InitStruct);
  204. /*Configure GPIO pins : PDPin PDPin */
  205. GPIO_InitStruct.Pin = IN_Emergency_Pin|IN_BTN_ModeSw_Pin;
  206. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  207. GPIO_InitStruct.Pull = GPIO_NOPULL;
  208. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  209. /*Configure GPIO pin : PtPin */
  210. GPIO_InitStruct.Pin = IN_SocketE_Detect_Pin;
  211. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  212. #ifdef MODIFY_SOCKET_E_DETECT_PIN
  213. GPIO_InitStruct.Pull = GPIO_PULLUP;
  214. #else
  215. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  216. #endif
  217. HAL_GPIO_Init(IN_SocketE_Detect_GPIO_Port, &GPIO_InitStruct);
  218. /*Configure GPIO pins : PDPin PDPin PDPin PDPin
  219. PDPin */
  220. GPIO_InitStruct.Pin = NoneUse_Pin86_GPIO_PD15_Pin|NoneUse_Pin114_GPIO_PD0_Pin|NoneUse_Pin115_GPIO_PD1_Pin|OUT_USB_DriveBus_Pin
  221. |OUT_Meter_485_DE_Pin;
  222. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  223. GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  224. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  225. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  226. /*Configure GPIO pins : PGPin PGPin PGPin */
  227. GPIO_InitStruct.Pin = OUT_BLE_DSR_Pin|OUT_RFID_Reset_Pin|LIN_PWM_SW_Pin;
  228. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  229. GPIO_InitStruct.Pull = GPIO_NOPULL;
  230. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  231. HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
  232. /*Configure GPIO pins : PCPin PCPin PCPin */
  233. GPIO_InitStruct.Pin = IN_Leak_Error_Pin|IN_Leak_AC_Pin|IN_Leak_DC_Pin;
  234. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  235. GPIO_InitStruct.Pull = GPIO_NOPULL;
  236. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  237. /*Configure GPIO pin : PtPin */
  238. GPIO_InitStruct.Pin = IN_1998_Pin;
  239. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  240. GPIO_InitStruct.Pull = GPIO_NOPULL;
  241. HAL_GPIO_Init(IN_1998_GPIO_Port, &GPIO_InitStruct);
  242. /*Configure GPIO pin : PtPin */
  243. GPIO_InitStruct.Pin = IN_CCS_Proximity_Pin;
  244. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  245. //#ifdef FUNC_TEST_SET_CSU_MOUNT_PIN_NOPULL
  246. // GPIO_InitStruct.Pull = GPIO_NOPULL;
  247. //#else
  248. GPIO_InitStruct.Pull = GPIO_PULLUP;
  249. //#endif
  250. HAL_GPIO_Init(IN_CCS_Proximity_GPIO_Port, &GPIO_InitStruct);
  251. #ifndef FUNC_ENABLE_USART1_RFID
  252. /*Configure GPIO pins : PB6 PB7 */
  253. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  254. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  255. GPIO_InitStruct.Pull = GPIO_PULLUP;
  256. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  257. GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
  258. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  259. #endif
  260. }
  261. /* USER CODE BEGIN 2 */
  262. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
  263. {
  264. #ifdef DISABLE_METER_IC_IRQ_INTERRUPT
  265. return;
  266. #else
  267. switch(GPIO_Pin)
  268. {
  269. case GPIO_PIN_4:
  270. /*
  271. TODO:
  272. 1. Meter IC IRQ0 interrupt
  273. */
  274. DEBUG_INFO("Meter IC IRQ0 interrupt...\r\n");
  275. break;
  276. case GPIO_PIN_5:
  277. /*
  278. TODO:
  279. 1. Meter IC IRQ1 interrupt
  280. */
  281. DEBUG_INFO("Meter IC IRQ1 interrupt...\r\n");
  282. break;
  283. default:
  284. break;
  285. }
  286. #endif
  287. }
  288. void Relay_Action_Set(uint8_t action)
  289. {
  290. switch(action)
  291. {
  292. case GPIO_RELAY1_ACTION_ON:
  293. RELAY1_SET_DRIV(1);
  294. RELAY1_SET_HOLD(0);
  295. DEBUG_INFO("#Relay-1 ON.\r\n");
  296. timerEnable(TIMER_IDX_RELAY_1, 100);
  297. //HAL_Delay(1);
  298. break;
  299. case GPIO_RELAY1_ACTION_HOLD:
  300. //#ifndef TEST_RELAY_DRIVE_WITHOUT_HOLD
  301. RELAY1_SET_HOLD(1);
  302. RELAY1_SET_DRIV(0);
  303. DEBUG_INFO("#Relay-1 Hold.\r\n");
  304. //#endif
  305. break;
  306. case GPIO_RELAY2_ACTION_ON:
  307. RELAY2_SET_DRIV(1);
  308. RELAY2_SET_HOLD(0);
  309. DEBUG_INFO("#Relay-2 ON.\r\n");
  310. timerEnable(TIMER_IDX_RELAY_2, 100);
  311. //HAL_Delay(1);
  312. break;
  313. case GPIO_RELAY2_ACTION_HOLD:
  314. //#ifndef TEST_RELAY_DRIVE_WITHOUT_HOLD
  315. RELAY2_SET_HOLD(1);
  316. RELAY2_SET_DRIV(0);
  317. DEBUG_INFO("#Relay-2 hold.\r\n");
  318. //#endif
  319. break;
  320. case GPIO_RELAY1_ACTION_OFF:
  321. RELAY1_SET_DRIV(0);
  322. RELAY1_SET_HOLD(0);
  323. DEBUG_INFO("#Relay-1 OFF.\r\n");
  324. break;
  325. case GPIO_RELAY2_ACTION_OFF:
  326. RELAY2_SET_DRIV(0);
  327. RELAY2_SET_HOLD(0);
  328. DEBUG_INFO("#Relay-2 OFF.\r\n");
  329. break;
  330. default:
  331. RELAY1_SET_DRIV(0);
  332. RELAY1_SET_HOLD(0);
  333. RELAY2_SET_DRIV(0);
  334. RELAY2_SET_HOLD(0);
  335. break;
  336. }
  337. }
  338. uint8_t Relay1_Action_Get(void)
  339. {
  340. uint8_t result = GPIO_RELAY1_ACTION_UNKNOW;
  341. if((RELAY1_GET_DRIV == GPIO_PIN_RESET) &&
  342. (RELAY1_GET_HOLD == GPIO_PIN_RESET))
  343. {
  344. result = GPIO_RELAY1_ACTION_OFF;
  345. }
  346. else if((RELAY1_GET_DRIV == GPIO_PIN_SET) &&
  347. (RELAY1_GET_HOLD == GPIO_PIN_RESET))
  348. {
  349. result = GPIO_RELAY1_ACTION_ON;
  350. }
  351. else if((RELAY1_GET_DRIV == GPIO_PIN_RESET) &&
  352. (RELAY1_GET_HOLD == GPIO_PIN_SET))
  353. {
  354. result = GPIO_RELAY1_ACTION_HOLD;
  355. }
  356. return result;
  357. }
  358. uint8_t Relay2_Action_Get(void)
  359. {
  360. uint8_t result = GPIO_RELAY2_ACTION_UNKNOW;
  361. if((RELAY2_GET_DRIV == GPIO_PIN_RESET) &&
  362. (RELAY2_GET_HOLD == GPIO_PIN_RESET))
  363. {
  364. result = GPIO_RELAY2_ACTION_OFF;
  365. }
  366. else if((RELAY2_GET_DRIV == GPIO_PIN_SET) &&
  367. (RELAY2_GET_HOLD == GPIO_PIN_RESET))
  368. {
  369. result = GPIO_RELAY2_ACTION_ON;
  370. }
  371. else if((RELAY2_GET_DRIV == GPIO_PIN_RESET) &&
  372. (RELAY2_GET_HOLD == GPIO_PIN_SET))
  373. {
  374. result = GPIO_RELAY2_ACTION_HOLD;
  375. }
  376. return result;
  377. }
  378. #ifdef FUNC_OUTP_TYPE_E
  379. void SE_Relay_Action_Set(uint8_t action)
  380. {
  381. switch(action)
  382. {
  383. case GPIO_SE_RELAY1_ACTION_ON:
  384. RELAY_SE_SET_DRIV(1);
  385. RELAY_SE_SET_HOLD(0);
  386. DEBUG_INFO("SocketE Relay-1 ON.\r\n");
  387. timerEnable(TIMER_IDX_SE_RELAY_1, 100);
  388. //HAL_Delay(1);
  389. break;
  390. case GPIO_SE_RELAY1_ACTION_HOLD:
  391. //#ifndef TEST_RELAY_DRIVE_WITHOUT_HOLD
  392. RELAY_SE_SET_HOLD(1);
  393. RELAY_SE_SET_DRIV(0);
  394. DEBUG_INFO("SocketE Relay-1 Hold.\r\n");
  395. //#endif
  396. break;
  397. case GPIO_SE_RELAY1_ACTION_OFF:
  398. RELAY_SE_SET_DRIV(0);
  399. RELAY_SE_SET_HOLD(0);
  400. DEBUG_INFO("SocketE Relay-1 OFF.\r\n");
  401. break;
  402. default:
  403. RELAY_SE_SET_DRIV(0);
  404. RELAY_SE_SET_HOLD(0);
  405. break;
  406. }
  407. }
  408. uint8_t SE_Relay1_Action_Get(void)
  409. {
  410. uint8_t result = GPIO_SE_RELAY1_ACTION_UNKNOW;
  411. if((RELAY_SE_GET_DRIV == GPIO_PIN_RESET) &&
  412. (RELAY_SE_GET_HOLD == GPIO_PIN_RESET) )
  413. {
  414. result = GPIO_SE_RELAY_ACTION_OFF;
  415. }
  416. else if((RELAY_SE_GET_DRIV == GPIO_PIN_SET) &&
  417. (RELAY_SE_GET_HOLD == GPIO_PIN_RESET))
  418. {
  419. result = GPIO_SE_RELAY_ACTION_ON;
  420. }
  421. else if((RELAY_SE_GET_DRIV == GPIO_PIN_RESET) &&
  422. (RELAY_SE_GET_HOLD == GPIO_PIN_SET))
  423. {
  424. result = GPIO_SE_RELAY_ACTION_HOLD;
  425. }
  426. return result;
  427. }
  428. #endif //FUNC_OUTP_TYPE_E
  429. //--------------------------------------------------------------------------------
  430. void getGridTypeSwitchSetting(void) // check Grounding System is LL or LN
  431. {
  432. #ifdef ROTATE_SWITCH_HARDCODE
  433. Charger.GroundingSystem = (HC_SWITCH_1_CONN_TYPE_VAL ? 0 : 1);
  434. #else
  435. Charger.GroundingSystem = (HAL_GPIO_ReadPin(IN_GridType_Select_GPIO_Port, IN_GridType_Select_Pin) ? 0 : 1);
  436. #endif
  437. if (Charger.GroundingSystem == GROUNGING_SYSTEM_LL)
  438. {
  439. DEBUG_INFO("Grounding System is set L-L (0)\r\n"); //Switch-OFF(0)
  440. }
  441. else
  442. {
  443. DEBUG_INFO("Grounding System is set L-N (1)\r\n"); //Switch-ON(1)
  444. }
  445. #ifdef ROTATE_SWITCH_HARDCODE
  446. Charger.GroundingDetect = (HC_SWITCH_2_GROUND_SYS ? 1 : 0);
  447. #else
  448. Charger.GroundingDetect = (HAL_GPIO_ReadPin(IN_Grid_Groundding_GPIO_Port, IN_Grid_Groundding_Pin) ? 1 : 0);
  449. #endif
  450. if (Charger.GroundingDetect == ON)
  451. {
  452. DEBUG_INFO("Grounding Detect ON (0: TT-TN)\r\n"); //Switch-OFF(0)
  453. }
  454. else
  455. {
  456. DEBUG_INFO("Grounding Detect OFF (1: IT)\r\n"); //Switch-ON(1)
  457. }
  458. }
  459. /* USER CODE END 2 */
  460. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/