/** ****************************************************************************** * @file xl_gpio.h * @author software group * @brief This file contains all the functions prototypes for the GPIO * firmware library. ****************************************************************************** * @attention * * 2019 by Chipways Communications,Inc. All Rights Reserved. * This software is supplied under the terms of a license * agreement or non-disclosure agreement with Chipways. * Passing on and copying of this document,and communication * of its contents is not permitted without prior written * authorization. * *

© COPYRIGHT 2019 Chipways

****************************************************************************** */ #ifndef __XL_GPIO_H_ #define __XL_GPIO_H_ #ifdef __cplusplus entern "C"{ #endif /* Includes ---------------------------------------------------------------*/ #include "XL6600.h" /** GPIO - Register Layout Typedef */ typedef struct { __IO uint32_t PDOR; /*!< ¶Ë¿ÚÊý¾ÝÊä³ö¼Ä´æÆ÷, offset: 0x0 */ __O uint32_t PSOR; /*!< ¶Ë¿ÚÖÃλÊä³ö¼Ä´æÆ÷, offset: 0x4 */ __O uint32_t PCOR; /*!< ¶Ë¿ÚÇåÁãÊä³ö¼Ä´æÆ÷, offset: 0x8 */ __O uint32_t PTOR; /*!< ¶Ë¿ÚÌø±äÊä³ö¼Ä´æÆ÷, offset: 0xC */ __I uint32_t PDIR; /*!< ¶Ë¿ÚÊý¾ÝÊäÈë¼Ä´æÆ÷, offset: 0x10 */ __IO uint32_t PDDR; /*!< ¶Ë¿ÚÊý¾Ý·½Ïò¼Ä´æÆ÷, offset: 0x14 */ __IO uint32_t PIDR; /*!< ¶Ë¿ÚÊäÈë½ûÓüĴæÆ÷, offset: 0x18 */ } GPIO_Type; extern GPIO_Type * GPIOA; extern GPIO_Type * GPIOB; extern GPIO_Type * GPIOC; /** @addtogroup XL6600_StdPeriph_Driver * @{ */ /** @addtogroup GPIO * @{ */ /* Exported constants --------------------------------------------------------*/ /** @defgroup GPIO_Exported_Constants GPIOÄ£¿éʹÓòÎÊý¶¨Òå * @{ */ /** @defgroup GPIO_Direction_Seclect GPIO·½Ïò¶¨ÒåÑ¡Ôñ * @{ */ typedef enum { GPIO_Direction_Input =0, /*!< Òý½ÅÅäÖÃΪͨÓÃÊäÈë */ GPIO_Direction_Output, /*!< Òý½ÅÅäÖÃΪͨÓÃÊä³ö */ GPIO_Direction_High_Z /*!< Òý½ÅÅäÖÃΪ¸ß×è̬ */ }GPIO_Direction_Mode; /** * @} */ /** @defgroup GPIO_OutputLevel_Seclect GPIOÊä³öµçƽ¶¨ÒåÑ¡Ôñ * @{ */ typedef enum { GPIO_Output_Low =0, /*!< Êä³öÂß¼­0 */ GPIO_Output_High /*!< Êä³öÂß¼­1 */ }GPIO_Output_Level; /** * @} */ /** @defgroup GPIO_InputLevel_Seclect GPIOÊäÈëµçƽ¶¨ÒåÑ¡Ôñ * @{ */ typedef enum { GPIO_Input_Low =0, /*!< ÊäÈëÂß¼­0 */ GPIO_Input_High /*!< ÊäÈëÂß¼­1 */ }GPIO_Input_Def; /** * @} */ /** @defgroup GPIO_PINNum_Define GPIOÒý½Å¶¨Òå * @{ */ /* in GPIOA register */ #define GPIO_PTA0 0 /*!< GPIOÒý½ÅPTA0 */ #define GPIO_PTA1 1 /*!< GPIOÒý½ÅPTA1 */ #define GPIO_PTA2 2 /*!< GPIOÒý½ÅPTA2 */ #define GPIO_PTA3 3 /*!< GPIOÒý½ÅPTA3 */ #define GPIO_PTA4 4 /*!< GPIOÒý½ÅPTA4 */ #define GPIO_PTA5 5 /*!< GPIOÒý½ÅPTA5 */ #define GPIO_PTA6 6 /*!< GPIOÒý½ÅPTA6 */ #define GPIO_PTA7 7 /*!< GPIOÒý½ÅPTA7 */ #define GPIO_PTB0 8 /*!< GPIOÒý½ÅPTB0 */ #define GPIO_PTB1 9 /*!< GPIOÒý½ÅPTB1 */ #define GPIO_PTB2 10 /*!< GPIOÒý½ÅPTB2 */ #define GPIO_PTB3 11 /*!< GPIOÒý½ÅPTB3 */ #define GPIO_PTB4 12 /*!< GPIOÒý½ÅPTB4 */ #define GPIO_PTB5 13 /*!< GPIOÒý½ÅPTB5 */ #define GPIO_PTB6 14 /*!< GPIOÒý½ÅPTB6 */ #define GPIO_PTB7 15 /*!< GPIOÒý½ÅPTB7 */ #define GPIO_PTC0 16 /*!< GPIOÒý½ÅPTC0 */ #define GPIO_PTC1 17 /*!< GPIOÒý½ÅPTC1 */ #define GPIO_PTC2 18 /*!< GPIOÒý½ÅPTC2 */ #define GPIO_PTC3 19 /*!< GPIOÒý½ÅPTC3 */ #define GPIO_PTC4 20 /*!< GPIOÒý½ÅPTC4 */ #define GPIO_PTC5 21 /*!< GPIOÒý½ÅPTC5 */ #define GPIO_PTC6 22 /*!< GPIOÒý½ÅPTC6 */ #define GPIO_PTC7 23 /*!< GPIOÒý½ÅPTC7 */ #define GPIO_PTD0 24 /*!< GPIOÒý½ÅPTD0 */ #define GPIO_PTD1 25 /*!< GPIOÒý½ÅPTD1 */ #define GPIO_PTD2 26 /*!< GPIOÒý½ÅPTD2 */ #define GPIO_PTD3 27 /*!< GPIOÒý½ÅPTD3 */ #define GPIO_PTD4 28 /*!< GPIOÒý½ÅPTD4 */ #define GPIO_PTD5 29 /*!< GPIOÒý½ÅPTD5 */ #define GPIO_PTD6 30 /*!< GPIOÒý½ÅPTD6 */ #define GPIO_PTD7 31 /*!< GPIOÒý½ÅPTD7 */ /* in GPIOB register */ #define GPIO_PTE0 32 /*!< GPIOÒý½ÅPTE0 */ #define GPIO_PTE1 33 /*!< GPIOÒý½ÅPTE1 */ #define GPIO_PTE2 34 /*!< GPIOÒý½ÅPTE2 */ #define GPIO_PTE3 35 /*!< GPIOÒý½ÅPTE3 */ #define GPIO_PTE4 36 /*!< GPIOÒý½ÅPTE4 */ #define GPIO_PTE5 37 /*!< GPIOÒý½ÅPTE5 */ #define GPIO_PTE6 38 /*!< GPIOÒý½ÅPTE6 */ #define GPIO_PTE7 39 /*!< GPIOÒý½ÅPTE7 */ #define GPIO_PTF0 40 /*!< GPIOÒý½ÅPTF0 */ #define GPIO_PTF1 41 /*!< GPIOÒý½ÅPTF1 */ #define GPIO_PTF2 42 /*!< GPIOÒý½ÅPTF2 */ #define GPIO_PTF3 43 /*!< GPIOÒý½ÅPTF3 */ #define GPIO_PTF4 44 /*!< GPIOÒý½ÅPTF4 */ #define GPIO_PTF5 45 /*!< GPIOÒý½ÅPTF5 */ #define GPIO_PTF6 46 /*!< GPIOÒý½ÅPTF6 */ #define GPIO_PTF7 47 /*!< GPIOÒý½ÅPTF7 */ #define GPIO_PTG0 48 /*!< GPIOÒý½ÅPTG0 */ #define GPIO_PTG1 49 /*!< GPIOÒý½ÅPTG1 */ #define GPIO_PTG2 50 /*!< GPIOÒý½ÅPTG2 */ #define GPIO_PTG3 51 /*!< GPIOÒý½ÅPTG3 */ #define GPIO_PTG4 52 /*!< GPIOÒý½ÅPTG4 */ #define GPIO_PTG5 53 /*!< GPIOÒý½ÅPTG5 */ #define GPIO_PTG6 54 /*!< GPIOÒý½ÅPTG6 */ #define GPIO_PTG7 55 /*!< GPIOÒý½ÅPTG7 */ #define GPIO_PTH0 56 /*!< GPIOÒý½ÅPTH0 */ #define GPIO_PTH1 57 /*!< GPIOÒý½ÅPTH1 */ #define GPIO_PTH2 58 /*!< GPIOÒý½ÅPTH2 */ #define GPIO_PTH3 59 /*!< GPIOÒý½ÅPTH3 */ #define GPIO_PTH4 60 /*!< GPIOÒý½ÅPTH4 */ #define GPIO_PTH5 61 /*!< GPIOÒý½ÅPTH5 */ #define GPIO_PTH6 62 /*!< GPIOÒý½ÅPTH6 */ #define GPIO_PTH7 63 /*!< GPIOÒý½ÅPTH7 */ /* in GPIOC register */ #define GPIO_PTI0 64 /*!< GPIOÒý½ÅPTI0 */ #define GPIO_PTI1 65 /*!< GPIOÒý½ÅPTI1 */ #define GPIO_PTI2 66 /*!< GPIOÒý½ÅPTI2 */ #define GPIO_PTI3 67 /*!< GPIOÒý½ÅPTI3 */ #define GPIO_PTI4 68 /*!< GPIOÒý½ÅPTI4 */ #define GPIO_PTI5 69 /*!< GPIOÒý½ÅPTI5 */ #define GPIO_PTI6 70 /*!< GPIOÒý½ÅPTI6 */ /** * @} */ /** * @} */ /* Exported macro ------------------------------------------------------------*/ /* Exported functions --------------------------------------------------------*/ void GPIO_DeInit(GPIO_Type *GPIOx); void GPIO_SetPinDir(uint8_t gpioPin,GPIO_Direction_Mode GPIO_Mode); void GPIO_SetPinOutput(uint8_t gpioPin, GPIO_Output_Level Output); void GPIO_TogglePin(uint8_t gpioPin); void GPIO_SetPin(uint8_t gpioPin); void GPIO_ClrPin(uint8_t gpioPin); uint32_t GPIO_ReadReg(const GPIO_Type *GPIOx); GPIO_Input_Def GPIO_ReadPin(uint8_t gpioPin); GPIO_Direction_Mode GPIO_ReadPinDir(uint8_t gpioPin); #ifdef __cplusplus } #endif #endif /*__XL_GPIO_H__ */ /** * @} */ /** * @} */