mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-15 17:02:53 +08:00
265 lines
7.4 KiB
C
265 lines
7.4 KiB
C
/********************************** (C) COPYRIGHT *******************************
|
||
* File Name : CH57x_gpio.h
|
||
* Author : WCH
|
||
* Version : V1.2
|
||
* Date : 2021/11/17
|
||
* Description
|
||
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
||
* SPDX-License-Identifier: Apache-2.0
|
||
*******************************************************************************/
|
||
|
||
#ifndef __CH58x_GPIO_H__
|
||
#define __CH58x_GPIO_H__
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/**
|
||
* @brief GPIO_pins_define
|
||
*/
|
||
#define GPIO_Pin_0 (0x00000001) /*!< Pin 0 selected */
|
||
#define GPIO_Pin_1 (0x00000002) /*!< Pin 1 selected */
|
||
#define GPIO_Pin_2 (0x00000004) /*!< Pin 2 selected */
|
||
#define GPIO_Pin_3 (0x00000008) /*!< Pin 3 selected */
|
||
#define GPIO_Pin_4 (0x00000010) /*!< Pin 4 selected */
|
||
#define GPIO_Pin_5 (0x00000020) /*!< Pin 5 selected */
|
||
#define GPIO_Pin_6 (0x00000040) /*!< Pin 6 selected */
|
||
#define GPIO_Pin_7 (0x00000080) /*!< Pin 7 selected */
|
||
#define GPIO_Pin_8 (0x00000100) /*!< Pin 8 selected */
|
||
#define GPIO_Pin_9 (0x00000200) /*!< Pin 9 selected */
|
||
#define GPIO_Pin_10 (0x00000400) /*!< Pin 10 selected */
|
||
#define GPIO_Pin_11 (0x00000800) /*!< Pin 11 selected */
|
||
#define GPIO_Pin_12 (0x00001000) /*!< Pin 12 selected */
|
||
#define GPIO_Pin_13 (0x00002000) /*!< Pin 13 selected */
|
||
#define GPIO_Pin_14 (0x00004000) /*!< Pin 14 selected */
|
||
#define GPIO_Pin_15 (0x00008000) /*!< Pin 15 selected */
|
||
#define GPIO_Pin_16 (0x00010000) /*!< Pin 16 selected */
|
||
#define GPIO_Pin_17 (0x00020000) /*!< Pin 17 selected */
|
||
#define GPIO_Pin_18 (0x00040000) /*!< Pin 18 selected */
|
||
#define GPIO_Pin_19 (0x00080000) /*!< Pin 19 selected */
|
||
#define GPIO_Pin_20 (0x00100000) /*!< Pin 20 selected */
|
||
#define GPIO_Pin_21 (0x00200000) /*!< Pin 21 selected */
|
||
#define GPIO_Pin_22 (0x00400000) /*!< Pin 22 selected */
|
||
#define GPIO_Pin_23 (0x00800000) /*!< Pin 23 selected */
|
||
#define GPIO_Pin_All (0xFFFFFFFF) /*!< All pins selected */
|
||
|
||
/**
|
||
* @brief Configuration GPIO Mode
|
||
*/
|
||
typedef enum
|
||
{
|
||
GPIO_ModeIN_Floating, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GPIO_ModeIN_PU, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GPIO_ModeIN_PD, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
GPIO_ModeOut_PP_5mA, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5mA
|
||
GPIO_ModeOut_PP_20mA, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>20mA
|
||
|
||
} GPIOModeTypeDef;
|
||
|
||
/**
|
||
* @brief Configuration GPIO IT Mode
|
||
*/
|
||
typedef enum
|
||
{
|
||
GPIO_ITMode_LowLevel, //<2F>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
|
||
GPIO_ITMode_HighLevel, //<2F>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
|
||
GPIO_ITMode_FallEdge, //<2F>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD>
|
||
GPIO_ITMode_RiseEdge, //<2F><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
|
||
|
||
} GPIOITModeTpDef;
|
||
|
||
/**
|
||
* @brief GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
|
||
*
|
||
* @param pin - PA0-PA15
|
||
* @param mode - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
void GPIOA_ModeCfg(uint32_t pin, GPIOModeTypeDef mode);
|
||
|
||
/**
|
||
* @brief GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
|
||
*
|
||
* @param pin - PB0-PB23
|
||
* @param mode - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
void GPIOB_ModeCfg(uint32_t pin, GPIOModeTypeDef mode);
|
||
|
||
/**
|
||
* @brief GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
|
||
*
|
||
* @param pin - PA0-PA15
|
||
*/
|
||
#define GPIOA_ResetBits(pin) (R32_PA_CLR |= pin)
|
||
|
||
/**
|
||
* @brief GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>
|
||
*
|
||
* @param pin - PA0-PA15
|
||
*/
|
||
#define GPIOA_SetBits(pin) (R32_PA_OUT |= pin)
|
||
|
||
/**
|
||
* @brief GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>
|
||
*
|
||
* @param pin - PB0-PB23
|
||
*/
|
||
#define GPIOB_ResetBits(pin) (R32_PB_CLR |= pin)
|
||
|
||
/**
|
||
* @brief GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>
|
||
*
|
||
* @param pin - PB0-PB23
|
||
*/
|
||
#define GPIOB_SetBits(pin) (R32_PB_OUT |= pin)
|
||
|
||
/**
|
||
* @brief GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>ת
|
||
*
|
||
* @param pin - PA0-PA15
|
||
*/
|
||
#define GPIOA_InverseBits(pin) (R32_PA_OUT ^= pin)
|
||
|
||
/**
|
||
* @brief GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>ת
|
||
*
|
||
* @param pin - PB0-PB23
|
||
*/
|
||
#define GPIOB_InverseBits(pin) (R32_PB_OUT ^= pin)
|
||
|
||
/**
|
||
* @brief GPIOA<4F>˿<EFBFBD>32λ<32><CEBB><EFBFBD>ݷ<EFBFBD><DDB7>أ<EFBFBD><D8A3><EFBFBD>16λ<36><CEBB>Ч
|
||
*
|
||
* @return GPIOA<4F>˿<EFBFBD>32λ<32><CEBB><EFBFBD><EFBFBD>
|
||
*/
|
||
#define GPIOA_ReadPort() (R32_PA_PIN)
|
||
|
||
/**
|
||
* @brief GPIOB<4F>˿<EFBFBD>32λ<32><CEBB><EFBFBD>ݷ<EFBFBD><DDB7>أ<EFBFBD><D8A3><EFBFBD>24λ<34><CEBB>Ч
|
||
*
|
||
* @return GPIOB<4F>˿<EFBFBD>32λ<32><CEBB><EFBFBD><EFBFBD>
|
||
*/
|
||
#define GPIOB_ReadPort() (R32_PB_PIN)
|
||
|
||
/**
|
||
* @brief GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>0-<2D><><EFBFBD>ŵ͵<C5B5>ƽ<EFBFBD><C6BD>(!0)-<2D><><EFBFBD>Ÿߵ<C5B8>ƽ
|
||
*
|
||
* @param pin - PA0-PA15
|
||
*
|
||
* @return GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>״̬
|
||
*/
|
||
#define GPIOA_ReadPortPin(pin) (R32_PA_PIN & (pin))
|
||
|
||
/**
|
||
* @brief GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>0-<2D><><EFBFBD>ŵ͵<C5B5>ƽ<EFBFBD><C6BD>(!0)-<2D><><EFBFBD>Ÿߵ<C5B8>ƽ
|
||
*
|
||
* @param pin - PB0-PB23
|
||
*
|
||
* @return GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>״̬
|
||
*/
|
||
#define GPIOB_ReadPortPin(pin) (R32_PB_PIN & (pin))
|
||
|
||
/**
|
||
* @brief GPIOA<4F><41><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
|
||
*
|
||
* @param pin - PA0-PA15
|
||
* @param mode - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
void GPIOA_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode);
|
||
|
||
/**
|
||
* @brief GPIOB<4F><42><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
|
||
*
|
||
* @param pin - PB0-PB23
|
||
* @param mode - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
void GPIOB_ITModeCfg(uint32_t pin, GPIOITModeTpDef mode);
|
||
|
||
/**
|
||
* @brief <20><>ȡGPIOA<4F>˿<EFBFBD><CBBF>жϱ<D0B6>־״̬
|
||
*
|
||
* @return GPIOA<4F>˿<EFBFBD><CBBF>жϱ<D0B6>־״̬
|
||
*/
|
||
#define GPIOA_ReadITFlagPort() (R16_PA_INT_IF)
|
||
|
||
/**
|
||
* @brief <20><>ȡGPIOB<4F>˿<EFBFBD><CBBF>жϱ<D0B6>־״̬
|
||
*
|
||
* @return GPIOB<4F>˿<EFBFBD><CBBF>жϱ<D0B6>־״̬
|
||
*/
|
||
#define GPIOB_ReadITFlagPort() ((R16_PB_INT_IF & (~((GPIO_Pin_22 | GPIO_Pin_23) >> 14))) | ((R16_PB_INT_IF << 14) & (GPIO_Pin_22 | GPIO_Pin_23)))
|
||
|
||
/**
|
||
* @brief <20><>ȡGPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־״̬
|
||
*
|
||
* @param pin - PA0-PA15
|
||
*
|
||
* @return GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־״̬
|
||
*/
|
||
#define GPIOA_ReadITFlagBit(pin) (R16_PA_INT_IF & (pin))
|
||
|
||
/**
|
||
* @brief <20><>ȡGPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־״̬
|
||
*
|
||
* @param pin - PB0-PB23
|
||
*
|
||
* @return GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־״̬
|
||
*/
|
||
#define GPIOB_ReadITFlagBit(pin) (R16_PB_INT_IF & ((pin) | (((pin) & (GPIO_Pin_22 | GPIO_Pin_23)) >> 14)))
|
||
|
||
/**
|
||
* @brief <20><><EFBFBD><EFBFBD>GPIOA<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־״̬
|
||
*
|
||
* @param pin - PA0-PA15
|
||
*/
|
||
#define GPIOA_ClearITFlagBit(pin) (R16_PA_INT_IF = pin)
|
||
|
||
/**
|
||
* @brief <20><><EFBFBD><EFBFBD>GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־״̬
|
||
*
|
||
* @param pin - PB0-PB23
|
||
*/
|
||
#define GPIOB_ClearITFlagBit(pin) (R16_PB_INT_IF = ((pin) | (((pin) & (GPIO_Pin_22 | GPIO_Pin_23)) >> 14)))
|
||
|
||
/**
|
||
* @brief <20><><EFBFBD>蹦<EFBFBD><E8B9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
|
||
*
|
||
* @param s - <20>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>ӳ<EFBFBD><D3B3>
|
||
* @param perph - RB_PIN_SPI0 - SPI0: PA12/PA13/PA14/PA15 -> PB12/PB13/PB14/PB15
|
||
* RB_PIN_UART1 - UART1: PA8/PA9 -> PB12/PB13
|
||
* RB_PIN_UART0 - UART0: PB4/PB7 -> PA15/PA14
|
||
* RB_PIN_TMR2 - TMR2: PA11 -> PB11
|
||
* RB_PIN_TMR1 - TMR1: PA10 -> PB10
|
||
* RB_PIN_TMR0 - TMR0: PA9 -> PB23
|
||
*/
|
||
void GPIOPinRemap(FunctionalState s, uint16_t perph);
|
||
|
||
/**
|
||
* @brief ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<49><4F><EFBFBD>Ź<EFBFBD><C5B9>ܿ<EFBFBD><DCBF><EFBFBD>
|
||
*
|
||
* @param s - <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>蹦<EFBFBD><E8B9A6>
|
||
* @param perph - RB_PIN_ADC0_1_IE - ADC0-1ͨ<31><CDA8>
|
||
* RB_PIN_ADC2_3_IE - ADC2-3ͨ<33><CDA8>
|
||
* RB_PIN_ADC4_5_IE - ADC4-5ͨ<35><CDA8>
|
||
* RB_PIN_ADC6_7_IE - ADC6-7ͨ<37><CDA8>
|
||
* RB_PIN_ADC8_9_IE - ADC8-9ͨ<39><CDA8>
|
||
* RB_PIN_ADC10_11_IE - ADC10-11ͨ<31><CDA8>
|
||
* RB_PIN_ADC12_13_IE - ADC12-13ͨ<33><CDA8>
|
||
* RB_PIN_XT32K_IE - <20>ⲿ32K<32><4B><EFBFBD><EFBFBD>
|
||
* RB_PIN_USB_IE - USB<53><42><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
||
* RB_PIN_ETH_IE - <20><>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
||
* RB_PIN_SEG0_3_IE - LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEG0-3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* RB_PIN_SEG4_7_IE - LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEG4-7<><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* RB_PIN_SEG8_11_IE - LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEG8-11<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* RB_PIN_SEG12_15_IE - LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEG12-15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* RB_PIN_SEG16_19_IE - LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEG16-19<31><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
* RB_PIN_SEG20_23_IE - LCD<43><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SEG20-23<32><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
*/
|
||
void GPIOAGPPCfg(FunctionalState s, uint16_t perph);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif // __CH58x_GPIO_H__
|