/**
* @file HW_GPIO_ATY.h
*
* @param Project DEVICE_GENERAL_ATY_LIB
*
* @author ATY
*
* @copyright
* - Copyright 2017 - 2025 MZ-ATY
* - This code follows:
* - MZ-ATY Various Contents Joint Statement -
*
* https://mengze.top/MZ-ATY_VCJS
* - CC 4.0 BY-NC-SA -
*
* https://creativecommons.org/licenses/by-nc-sa/4.0/
* - Your use will be deemed to have accepted the terms of this statement.
*
* @brief Familiar definition of GPIO for users
*
* @version
* - 1_01_220602 > ATY
* -# Preliminary version, first Release
* - Undone
********************************************************************************
*/
#ifndef __HW_GPIO_ATY_H
#define __HW_GPIO_ATY_H
#include "INCLUDE_ATY.h"
#if defined (__STC51_ATY)
#define GPIO_SET_H(Port, Pin) Pin = 1
#define GPIO_SET_L(Port, Pin) Pin = 0
#define GPIO_GET(Port, Pin) Pin
#define GPIO_SET_IN(Port, Pin) Pin = 1;__NOP_ATY;__NOP_ATY
#define GPIO_SET_OUT(Port, Pin) Pin = 0
#elif defined(__HC32_ATY)
#define GPIO_SET_H(Port, Pin) Gpio_SetIO(Port, Pin)
#define GPIO_SET_L(Port, Pin) Gpio_ClrIO(Port, Pin)
#define GPIO_GET(Port, Pin) ((Gpio_GetInputIO(Port, Pin) == 0) ? 0: 1)
#elif defined(__STM32_HAL_ATY)
#define GPIO_SET_H(Port, Pin) HAL_GPIO_WritePin(Port, Pin, GPIO_PIN_SET)
#define GPIO_SET_L(Port, Pin) HAL_GPIO_WritePin(Port, Pin, GPIO_PIN_RESET)
#define GPIO_GET(Port, Pin) ((HAL_GPIO_ReadPin(Port, Pin) == GPIO_PIN_RESET) ? 0: 1)
#define GPIO_SET_IN(Port, Pin) GPIO_SetIn(Port, Pin)
#define GPIO_SET_OUT(Port, Pin) GPIO_SetOut(Port, Pin)
#define GPIO_SetOut(GPIOx, GPIO_Pin) \
{ \
GPIO_InitTypeDef GPIO_InitStruct; \
__HAL_RCC_GPIOB_CLK_ENABLE(); \
GPIO_InitStruct.Pin = GPIO_Pin; \
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; \
GPIO_InitStruct.Pull = GPIO_NOPULL; \
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; \
HAL_GPIO_Init(GPIOx, &GPIO_InitStruct); \
}
#define GPIO_SetIn(GPIOx, GPIO_Pin) \
{ \
GPIO_InitTypeDef GPIO_InitStruct; \
__HAL_RCC_GPIOB_CLK_ENABLE(); \
GPIO_InitStruct.Pin = GPIO_Pin; \
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; \
GPIO_InitStruct.Pull = GPIO_NOPULL; \
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; \
HAL_GPIO_Init(GPIOx, &GPIO_InitStruct); \
}
// void GPIO_SetIn(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
// void GPIO_SetOut(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
#endif /* PLATFORM */
/******************************* For user *************************************/
#if defined (__STC51_ATY)
#ifdef __LED_ATY_H
#ifndef SYSLED_PORT
#define SYSLED_PORT 0
#endif
#ifndef SYSLED_PIN
#define SYSLED_PIN P34
#endif
#endif /* __LED_ATY_H */
#ifdef PW_PIN
#define MCU_Off \
do{ \
/* power off directely */ \
PW_PIN = 0; \
}while(0)
#endif /* PW_PIN */
#ifndef __I2C_HARDWARE_ATY
#define I2C_SCL_PORT 0
#define I2C_SCL_PIN P32
#define I2C_SDA_PORT 0
#define I2C_SDA_PIN P33
#endif /* __I2C_HARDWARE_ATY */
// #ifdef __GP22_ATY_H
#define GP22_RST_PORT 0
#ifndef GP22_RST_PIN
#define GP22_RST_PIN P11
#endif
#define GP22_CSN_PORT 0
#ifndef GP22_CSN_PIN
#define GP22_CSN_PIN P12
#endif
#define GP22_INT_PORT 0
#ifndef GP22_INT_PIN
#define GP22_INT_PIN P16
#endif
#define GP22_EN_PORT 0
#ifndef GP22_EN_PIN
#define GP22_EN_PIN P10
#endif
#define GP22_SIGNAL_PORT 0
#ifndef GP22_SIGNAL_PIN
#define GP22_SIGNAL_PIN 0
#endif
#define GP22_SCLK_PIN P15
#define GP22_MISO_PIN P14
#define GP22_MOSI_PIN P13
// #endif /* __GP22_ATY_H */
#ifdef __MOTOR_DC_ATY_H
#define MOTOR_A_PORT 0
#ifndef MOTOR_A_PIN
#define MOTOR_A_PIN P54
#endif /* MOTOR_A_PIN */
#define MOTOR_B_PORT 0
#ifndef MOTOR_B_PIN
#define MOTOR_B_PIN P17
#endif /* MOTOR_B_PIN */
#define MOTOR_EN_PORT 0
#ifndef MOTOR_EN_PIN
#define MOTOR_EN_PIN P17
#endif /* MOTOR_EN_PIN */
#endif /* __MOTOR_DC_ATY_H */
#ifdef __WS2812_ATY_H
#define WS2812_PORT 0
#define WS2812_PIN P12
#endif /* __WS2812_ATY_H */
#elif defined(__STM32_HAL_ATY)
#ifdef __LED_ATY_H
#if !defined(SYSLED_PORT) && !defined(SYSLED_PIN)
#define SYSLED_PORT SYSLED_GPIO_Port
#define SYSLED_PIN SYSLED_Pin
#endif /* SYSLED_PORT SYSLED_PIN */
#endif /* __LED_ATY_H */
#ifdef __TMC2209_ATY_H
#define MOTOR_EN_PORT MO2_EN_GPIO_Port
#define MOTOR_EN_PIN MO2_EN_Pin
#define MOTOR_DIR_PORT MO2_DIR_GPIO_Port
#define MOTOR_DIR_PIN MO2_DIR_Pin
#define TMC2209_PORT MO2_STEP_GPIO_Port
#define TMC2209_PIN MO2_STEP_Pin
#define MOTOR_DIAG_PORT 0
#define MOTOR_DIAG_PIN 0
#endif /* __TMC2209_ATY_H */
#ifndef __I2C_HARDWARE_ATY
#define I2C_SCL_PORT I2C_SCL_GPIO_Port
#define I2C_SCL_PIN I2C_SCL_Pin
#define I2C_SDA_PORT I2C_SDA_GPIO_Port
#define I2C_SDA_PIN I2C_SDA_Pin
#endif /* __I2C_HARDWARE_ATY */
#ifdef __GP22_ATY_H
#define GP22_SIGNAL_PORT 0
#define GP22_SIGNAL_PIN 0
#define GP22_CSN_PORT TDC_CSN_GPIO_Port
#define GP22_CSN_PIN TDC_CSN_Pin
#define GP22_RST_PORT TDC_RST_GPIO_Port
#define GP22_RST_PIN TDC_RST_Pin
#define GP22_INT_PORT TDC_INT_GPIO_Port
#define GP22_INT_PIN TDC_INT_Pin
#endif /* __GP22_ATY_H */
#endif /* PLATFORM */
/******************************************************************************/
#endif /* __HW_GPIO_ATY_H */
/******************************** End Of File *********************************/