/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.h
  * @brief          : Header for main.c file.
  *                   This file contains the common defines of the application.
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2025 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "stm32h7xx_hal.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "OutputDebug.h"
#include "ErrorHandling.h"
/* USER CODE END Includes */

/* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */

/* USER CODE END ET */

/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */

/* USER CODE END EC */

/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */

/* USER CODE END EM */

/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);

/* USER CODE BEGIN EFP */

/* USER CODE END EFP */

/* Private defines -----------------------------------------------------------*/
#define TIM4_CLK_DIVIDER (TIM_INPUT_CLK / (75 * 10000))
#define TIM2_CLK_DIVIDER 1
#define TIM14_CLK_DIVIDER 1
#define TIM5_CLK_DIVIDER TIM_CLK_DIVIDER
#define TIM8_CLK_DIVIDER (TIM_INPUT_CLK / (921600 / 4))
#define TIM15_CLK_DIVIDER TIM_CLK_DIVIDER
#define TIM16_CLK_DIVIDER TIM_CLK_DIVIDER
#define TIM_CLK_DIVIDER (TIM_INPUT_CLK / 1000000)
#define TIM_INPUT_CLK 50000000
#define TIM17_CLK_DIVIDER TIM_CLK_DIVIDER
#define TIM7_CLK_DIVIDER (TIM_CLK_DIVIDER * 100)
#define B6_Pin GPIO_PIN_6
#define B6_GPIO_Port GPIOI
#define B5_Pin GPIO_PIN_5
#define B5_GPIO_Port GPIOI
#define B4_Pin GPIO_PIN_4
#define B4_GPIO_Port GPIOI
#define MOSI1_Pin GPIO_PIN_5
#define MOSI1_GPIO_Port GPIOB
#define TACHO_LVL_Pin GPIO_PIN_5
#define TACHO_LVL_GPIO_Port GPIOK
#define nADC1_Pin GPIO_PIN_10
#define nADC1_GPIO_Port GPIOG
#define RXD6_Pin GPIO_PIN_9
#define RXD6_GPIO_Port GPIOG
#define TXD2_Pin GPIO_PIN_5
#define TXD2_GPIO_Port GPIOD
#define TXE2_Pin GPIO_PIN_4
#define TXE2_GPIO_Port GPIOD
#define PWM1_Pin GPIO_PIN_15
#define PWM1_GPIO_Port GPIOA
#define SCLK2_Pin GPIO_PIN_1
#define SCLK2_GPIO_Port GPIOI
#define nCE2_Pin GPIO_PIN_0
#define nCE2_GPIO_Port GPIOI
#define B7_Pin GPIO_PIN_7
#define B7_GPIO_Port GPIOI
#define BL1_Pin GPIO_PIN_1
#define BL1_GPIO_Port GPIOE
#define TXD1_Pin GPIO_PIN_6
#define TXD1_GPIO_Port GPIOB
#define MISO1_Pin GPIO_PIN_4
#define MISO1_GPIO_Port GPIOB
#define CT3_Pin GPIO_PIN_4
#define CT3_GPIO_Port GPIOK
#define ETH_TXEN_Pin GPIO_PIN_11
#define ETH_TXEN_GPIO_Port GPIOG
#define B3_Pin GPIO_PIN_15
#define B3_GPIO_Port GPIOJ
#define RXD2_Pin GPIO_PIN_6
#define RXD2_GPIO_Port GPIOD
#define G7_Pin GPIO_PIN_3
#define G7_GPIO_Port GPIOD
#define SWCLK_Pin GPIO_PIN_14
#define SWCLK_GPIO_Port GPIOA
#define MISO2_Pin GPIO_PIN_2
#define MISO2_GPIO_Port GPIOI
#define G4_Pin GPIO_PIN_15
#define G4_GPIO_Port GPIOH
#define RXD4_Pin GPIO_PIN_14
#define RXD4_GPIO_Port GPIOH
#define DQ2_Pin GPIO_PIN_2
#define DQ2_GPIO_Port GPIOE
#define BL0_Pin GPIO_PIN_0
#define BL0_GPIO_Port GPIOE
#define SDA_Pin GPIO_PIN_7
#define SDA_GPIO_Port GPIOB
#define PWM2_Pin GPIO_PIN_3
#define PWM2_GPIO_Port GPIOB
#define LCD_PWR_Pin GPIO_PIN_6
#define LCD_PWR_GPIO_Port GPIOK
#define CT2_Pin GPIO_PIN_3
#define CT2_GPIO_Port GPIOK
#define ETH_TX1_Pin GPIO_PIN_12
#define ETH_TX1_GPIO_Port GPIOG
#define TXD5_Pin GPIO_PIN_12
#define TXD5_GPIO_Port GPIOC
#define MOSI2_Pin GPIO_PIN_3
#define MOSI2_GPIO_Port GPIOI
#define SWDIO_Pin GPIO_PIN_13
#define SWDIO_GPIO_Port GPIOA
#define OUT0_Pin GPIO_PIN_5
#define OUT0_GPIO_Port GPIOE
#define LED_PWR_Pin GPIO_PIN_4
#define LED_PWR_GPIO_Port GPIOE
#define nIRQ_ANYBUS_Pin GPIO_PIN_3
#define nIRQ_ANYBUS_GPIO_Port GPIOE
#define TXD4_Pin GPIO_PIN_9
#define TXD4_GPIO_Port GPIOB
#define SCL_Pin GPIO_PIN_8
#define SCL_GPIO_Port GPIOB
#define nCAS_Pin GPIO_PIN_15
#define nCAS_GPIO_Port GPIOG
#define LCD_DE_Pin GPIO_PIN_7
#define LCD_DE_GPIO_Port GPIOK
#define TXD6_Pin GPIO_PIN_14
#define TXD6_GPIO_Port GPIOG
#define ETH_TX0_Pin GPIO_PIN_13
#define ETH_TX0_GPIO_Port GPIOG
#define B2_Pin GPIO_PIN_14
#define B2_GPIO_Port GPIOJ
#define G3_Pin GPIO_PIN_12
#define G3_GPIO_Port GPIOJ
#define RXD5_Pin GPIO_PIN_2
#define RXD5_GPIO_Port GPIOD
#define D2_Pin GPIO_PIN_0
#define D2_GPIO_Port GPIOD
#define RXD1_Pin GPIO_PIN_10
#define RXD1_GPIO_Port GPIOA
#define R5_Pin GPIO_PIN_9
#define R5_GPIO_Port GPIOA
#define G2_Pin GPIO_PIN_13
#define G2_GPIO_Port GPIOH
#define LCD_FP_Pin GPIO_PIN_9
#define LCD_FP_GPIO_Port GPIOI
#define OUT9_Pin GPIO_PIN_6
#define OUT9_GPIO_Port GPIOE
#define D3_Pin GPIO_PIN_1
#define D3_GPIO_Port GPIOD
#define TXE5_Pin GPIO_PIN_8
#define TXE5_GPIO_Port GPIOC
#define DQ0_Pin GPIO_PIN_9
#define DQ0_GPIO_Port GPIOC
#define R6_Pin GPIO_PIN_8
#define R6_GPIO_Port GPIOA
#define USB0_P_Pin GPIO_PIN_12
#define USB0_P_GPIO_Port GPIOA
#define USB0_N_Pin GPIO_PIN_11
#define USB0_N_GPIO_Port GPIOA
#define LCD_LP_Pin GPIO_PIN_10
#define LCD_LP_GPIO_Port GPIOI
#define G6_Pin GPIO_PIN_11
#define G6_GPIO_Port GPIOI
#define SDCLK_Pin GPIO_PIN_8
#define SDCLK_GPIO_Port GPIOG
#define DOTCLK_Pin GPIO_PIN_7
#define DOTCLK_GPIO_Port GPIOG
#define A2_Pin GPIO_PIN_2
#define A2_GPIO_Port GPIOF
#define A1_Pin GPIO_PIN_1
#define A1_GPIO_Port GPIOF
#define A0_Pin GPIO_PIN_0
#define A0_GPIO_Port GPIOF
#define BA1_Pin GPIO_PIN_5
#define BA1_GPIO_Port GPIOG
#define nFLASH_Pin GPIO_PIN_6
#define nFLASH_GPIO_Port GPIOG
#define COL0_Pin GPIO_PIN_12
#define COL0_GPIO_Port GPIOI
#define COL1_Pin GPIO_PIN_13
#define COL1_GPIO_Port GPIOI
#define COL2_Pin GPIO_PIN_14
#define COL2_GPIO_Port GPIOI
#define A3_Pin GPIO_PIN_3
#define A3_GPIO_Port GPIOF
#define BA0_Pin GPIO_PIN_4
#define BA0_GPIO_Port GPIOG
#define nRST_ETHER_Pin GPIO_PIN_3
#define nRST_ETHER_GPIO_Port GPIOG
#define nRST_ANYBUS_Pin GPIO_PIN_2
#define nRST_ANYBUS_GPIO_Port GPIOG
#define CT1_Pin GPIO_PIN_2
#define CT1_GPIO_Port GPIOK
#define XTOUT_Pin GPIO_PIN_1
#define XTOUT_GPIO_Port GPIOH
#define XTIN_Pin GPIO_PIN_0
#define XTIN_GPIO_Port GPIOH
#define A5_Pin GPIO_PIN_5
#define A5_GPIO_Port GPIOF
#define A4_Pin GPIO_PIN_4
#define A4_GPIO_Port GPIOF
#define G5_Pin GPIO_PIN_0
#define G5_GPIO_Port GPIOK
#define CT0_Pin GPIO_PIN_1
#define CT0_GPIO_Port GPIOK
#define DQ3_Pin GPIO_PIN_6
#define DQ3_GPIO_Port GPIOF
#define nRST_BLUE_Pin GPIO_PIN_11
#define nRST_BLUE_GPIO_Port GPIOJ
#define USB0_CC_Pin GPIO_PIN_0
#define USB0_CC_GPIO_Port GPIOC
#define SQCLK_Pin GPIO_PIN_10
#define SQCLK_GPIO_Port GPIOF
#define DQ1_Pin GPIO_PIN_9
#define DQ1_GPIO_Port GPIOF
#define nRST_LCD_Pin GPIO_PIN_10
#define nRST_LCD_GPIO_Port GPIOJ
#define ETH_MDC_Pin GPIO_PIN_1
#define ETH_MDC_GPIO_Port GPIOC
#define SDnCS_Pin GPIO_PIN_2
#define SDnCS_GPIO_Port GPIOC
#define SDCKE_Pin GPIO_PIN_3
#define SDCKE_GPIO_Port GPIOC
#define HW3_Pin GPIO_PIN_9
#define HW3_GPIO_Port GPIOJ
#define ETH_MDIO_Pin GPIO_PIN_2
#define ETH_MDIO_GPIO_Port GPIOA
#define ETH_REF_CLK_Pin GPIO_PIN_1
#define ETH_REF_CLK_GPIO_Port GPIOA
#define IN0_Pin GPIO_PIN_0
#define IN0_GPIO_Port GPIOA
#define R7_Pin GPIO_PIN_0
#define R7_GPIO_Port GPIOJ
#define D7_Pin GPIO_PIN_10
#define D7_GPIO_Port GPIOE
#define HW2_Pin GPIO_PIN_8
#define HW2_GPIO_Port GPIOJ
#define HW1_Pin GPIO_PIN_7
#define HW1_GPIO_Port GPIOJ
#define HW0_Pin GPIO_PIN_6
#define HW0_GPIO_Port GPIOJ
#define SDnWE_Pin GPIO_PIN_5
#define SDnWE_GPIO_Port GPIOH
#define COL3_Pin GPIO_PIN_15
#define COL3_GPIO_Port GPIOI
#define R2_Pin GPIO_PIN_1
#define R2_GPIO_Port GPIOJ
#define A7_Pin GPIO_PIN_13
#define A7_GPIO_Port GPIOF
#define A8_Pin GPIO_PIN_14
#define A8_GPIO_Port GPIOF
#define D6_Pin GPIO_PIN_9
#define D6_GPIO_Port GPIOE
#define D8_Pin GPIO_PIN_11
#define D8_GPIO_Port GPIOE
#define PWM3_Pin GPIO_PIN_10
#define PWM3_GPIO_Port GPIOB
#define R4_Pin GPIO_PIN_10
#define R4_GPIO_Port GPIOH
#define IN9_Pin GPIO_PIN_11
#define IN9_GPIO_Port GPIOH
#define D1_Pin GPIO_PIN_15
#define D1_GPIO_Port GPIOD
#define D0_Pin GPIO_PIN_14
#define D0_GPIO_Port GPIOD
#define ADC_24V_Pin GPIO_PIN_6
#define ADC_24V_GPIO_Port GPIOA
#define ETH_CRS_DV_Pin GPIO_PIN_7
#define ETH_CRS_DV_GPIO_Port GPIOA
#define A6_Pin GPIO_PIN_12
#define A6_GPIO_Port GPIOF
#define A9_Pin GPIO_PIN_15
#define A9_GPIO_Port GPIOF
#define D9_Pin GPIO_PIN_12
#define D9_GPIO_Port GPIOE
#define D12_Pin GPIO_PIN_15
#define D12_GPIO_Port GPIOE
#define SEL_D_Pin GPIO_PIN_5
#define SEL_D_GPIO_Port GPIOJ
#define R3_Pin GPIO_PIN_9
#define R3_GPIO_Port GPIOH
#define LED_PWM_Pin GPIO_PIN_12
#define LED_PWM_GPIO_Port GPIOD
#define BUZZER_Pin GPIO_PIN_13
#define BUZZER_GPIO_Port GPIOD
#define SCLK1_Pin GPIO_PIN_5
#define SCLK1_GPIO_Port GPIOA
#define ETH_RX0_Pin GPIO_PIN_4
#define ETH_RX0_GPIO_Port GPIOC
#define SEL_A_Pin GPIO_PIN_2
#define SEL_A_GPIO_Port GPIOJ
#define nRAS_Pin GPIO_PIN_11
#define nRAS_GPIO_Port GPIOF
#define A10_Pin GPIO_PIN_0
#define A10_GPIO_Port GPIOG
#define D5_Pin GPIO_PIN_8
#define D5_GPIO_Port GPIOE
#define D10_Pin GPIO_PIN_13
#define D10_GPIO_Port GPIOE
#define nRST_SMOD_Pin GPIO_PIN_8
#define nRST_SMOD_GPIO_Port GPIOH
#define USB1_FAULT_Pin GPIO_PIN_12
#define USB1_FAULT_GPIO_Port GPIOB
#define USB1_P_Pin GPIO_PIN_15
#define USB1_P_GPIO_Port GPIOB
#define D15_Pin GPIO_PIN_10
#define D15_GPIO_Port GPIOD
#define D14_Pin GPIO_PIN_9
#define D14_GPIO_Port GPIOD
#define ANY_MI0_Pin GPIO_PIN_3
#define ANY_MI0_GPIO_Port GPIOA
#define ANY_MI1_Pin GPIO_PIN_4
#define ANY_MI1_GPIO_Port GPIOA
#define ETH_RX1_Pin GPIO_PIN_5
#define ETH_RX1_GPIO_Port GPIOC
#define D_nC_Pin GPIO_PIN_0
#define D_nC_GPIO_Port GPIOB
#define SEL_B_Pin GPIO_PIN_3
#define SEL_B_GPIO_Port GPIOJ
#define SEL_C_Pin GPIO_PIN_4
#define SEL_C_GPIO_Port GPIOJ
#define A11_Pin GPIO_PIN_1
#define A11_GPIO_Port GPIOG
#define D4_Pin GPIO_PIN_7
#define D4_GPIO_Port GPIOE
#define D11_Pin GPIO_PIN_14
#define D11_GPIO_Port GPIOE
#define TEST_SMOD_Pin GPIO_PIN_7
#define TEST_SMOD_GPIO_Port GPIOH
#define USB1_PWR_Pin GPIO_PIN_13
#define USB1_PWR_GPIO_Port GPIOB
#define USB1_N_Pin GPIO_PIN_14
#define USB1_N_GPIO_Port GPIOB
#define D13_Pin GPIO_PIN_8
#define D13_GPIO_Port GPIOD

/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */
