CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Include/ciu32l051_std_gpio.h

704 lines
24 KiB
C
Raw Normal View History

/************************************************************************************************/
/**
* @file ciu32l051_std_gpio.h
* @author MCU Ecosystem Development Team
* @brief GPIO STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
#ifndef CIU32L051_STD_GPIO_H
#define CIU32L051_STD_GPIO_H
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @defgroup GPIO GPIO
* @brief ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿڵ<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32l051_std_common.h"
/*-----------------------------------------type define------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup GPIO_Types GPIO Types
* @brief GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
/**
* @brief GPIO<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef struct
{
uint32_t pin; /**< ָ<><D6B8>GPIO<49><4F><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@arg GPIO_PIN_0 ... */
uint32_t mode; /**< ָ<><D6B8>GPIO<49><4F><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@arg GPIO_MODE_INPUT
@arg GPIO_MODE_ANALOG
@arg GPIO_MODE_OUTPUT
@arg GPIO_MODE_ALTERNATE */
uint32_t pull; /**< ָ<><D6B8>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@arg GPIO_NOPULL ... */
uint32_t output_type; /**< ָ<><D6B8>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@arg GPIO_OUTPUT_PUSHPULL
@arg GPIO_OUTPUT_OPENDRAIN */
uint32_t alternate; /**< ָ<><D6B8>GPIO<49><4F><EFBFBD>Ÿ<EFBFBD><C5B8>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@arg GPIO_AF0_MCO ... */
} std_gpio_init_t;
/**
* @}
*/
/*--------------------------------------------define--------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup GPIO_Constants GPIO Constants
* @brief GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*
*/
/************************************************************************************************/
/* GPIO PIN<49><4E><EFBFBD><EFBFBD> */
#define GPIO_PIN_0 ((uint16_t)0x0001U) /**< ѡ<><D1A1> PIN 0 */
#define GPIO_PIN_1 ((uint16_t)0x0002U) /**< ѡ<><D1A1> PIN 1 */
#define GPIO_PIN_2 ((uint16_t)0x0004U) /**< ѡ<><D1A1> PIN 2 */
#define GPIO_PIN_3 ((uint16_t)0x0008U) /**< ѡ<><D1A1> PIN 3 */
#define GPIO_PIN_4 ((uint16_t)0x0010U) /**< ѡ<><D1A1> PIN 4 */
#define GPIO_PIN_5 ((uint16_t)0x0020U) /**< ѡ<><D1A1> PIN 5 */
#define GPIO_PIN_6 ((uint16_t)0x0040U) /**< ѡ<><D1A1> PIN 6 */
#define GPIO_PIN_7 ((uint16_t)0x0080U) /**< ѡ<><D1A1> PIN 7 */
#define GPIO_PIN_8 ((uint16_t)0x0100U) /**< ѡ<><D1A1> PIN 8 */
#define GPIO_PIN_9 ((uint16_t)0x0200U) /**< ѡ<><D1A1> PIN 9 */
#define GPIO_PIN_10 ((uint16_t)0x0400U) /**< ѡ<><D1A1> PIN 10 */
#define GPIO_PIN_11 ((uint16_t)0x0800U) /**< ѡ<><D1A1> PIN 11 */
#define GPIO_PIN_12 ((uint16_t)0x1000U) /**< ѡ<><D1A1> PIN 12 */
#define GPIO_PIN_13 ((uint16_t)0x2000U) /**< ѡ<><D1A1> PIN 13 */
#define GPIO_PIN_14 ((uint16_t)0x4000U) /**< ѡ<><D1A1> PIN 14 */
#define GPIO_PIN_15 ((uint16_t)0x8000U) /**< ѡ<><D1A1> PIN 15 */
#define GPIO_PIN_All ((uint16_t)0xFFFFU) /**< ѡ<><D1A1> ȫ<><C8AB> */
/* GPIO ģʽ<C4A3><CABD><EFBFBD>ó<EFBFBD><C3B3><EFBFBD> */
#define GPIO_MODE_INPUT (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EBB8A1> */
#define GPIO_MODE_OUTPUT (0x00000001U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define GPIO_MODE_ALTERNATE (0x00000002U) /**< <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD> */
#define GPIO_MODE_ANALOG (0x00000003U) /**< ģ<><EFBFBD><E2B9A6> */
/* GPIO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> */
#define GPIO_NOPULL (0x00000000U) /**< <20><><EFBFBD>ϡ<EFBFBD><CFA1><EFBFBD><EFBFBD><EFBFBD> */
#define GPIO_PULLUP (0x00000001U) /**< <20><><EFBFBD><EFBFBD> */
#define GPIO_PULLDOWN (0x00000002U) /**< <20><><EFBFBD><EFBFBD> */
/* GPIO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define GPIO_OUTPUT_PUSHPULL (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define GPIO_OUTPUT_OPENDRAIN (0x00000001U) /**< <20><>©<EFBFBD><C2A9><EFBFBD><EFBFBD> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>0 */
#define GPIO_AF0_MCO ((uint8_t)0x00U) /**< MCO <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF0_SWD ((uint8_t)0x00U) /**< SWD <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF0_SPI1 ((uint8_t)0x00U) /**< SPI1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF0_SPI2 ((uint8_t)0x00U) /**< SPI2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF0_TIM5 ((uint8_t)0x00U) /**< TIM5 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>1 */
#define GPIO_AF1_IROUT ((uint8_t)0x01U) /**< IROUT <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF1_SPI2 ((uint8_t)0x01U) /**< SPI2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF1_TIM3 ((uint8_t)0x01U) /**< TIM3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF1_TIM4 ((uint8_t)0x01U) /**< TIM4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF1_USART1 ((uint8_t)0x01U) /**< USART1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF1_UART2 ((uint8_t)0x01U) /**< UART2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF1_UART3 ((uint8_t)0x01U) /**< UART3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF1_UART4 ((uint8_t)0x01U) /**< UART4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>2 */
#define GPIO_AF2_IROUT ((uint8_t)0x02U) /**< IROUT <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_COMP2 ((uint8_t)0x02U) /**< COMP2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_SPI1 ((uint8_t)0x02U) /**< SPI1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /**< TIM3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_TIM4 ((uint8_t)0x02U) /**< TIM4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_TIM5 ((uint8_t)0x02U) /**< TIM5 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_USART1 ((uint8_t)0x02U) /**< USART1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_UART3 ((uint8_t)0x02U) /**< UART3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF2_UART4 ((uint8_t)0x02U) /**< UART4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>3 */
#define GPIO_AF3_LCD ((uint8_t)0x03U) /**< LCD <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>4 */
#define GPIO_AF4_SPI2 ((uint8_t)0x04U) /**< SPI2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF4_TIM3 ((uint8_t)0x04U) /**< TIM3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF4_TIM4 ((uint8_t)0x04U) /**< TIM4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF4_TIM5 ((uint8_t)0x04U) /**< TIM5 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF4_UART2 ((uint8_t)0x04U) /**< UART2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF4_UART3 ((uint8_t)0x04U) /**< UART3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF4_UART4 ((uint8_t)0x04U) /**< UART4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF4_LPUART2 ((uint8_t)0x04U) /**< LPUART2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>5 */
#define GPIO_AF5_IROUT ((uint8_t)0x05U) /**< IROUT <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF5_MCO ((uint8_t)0x05U) /**< MCO <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF5_LPTIM1 ((uint8_t)0x05U) /**< LPTIM1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF5_TIM4 ((uint8_t)0x05U) /**< TIM4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF5_TIM5 ((uint8_t)0x05U) /**< TIM5 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF5_LPUART2 ((uint8_t)0x05U) /**< LPUART2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF5_UART3 ((uint8_t)0x05U) /**< UART3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>6 */
#define GPIO_AF6_LPTIM1 ((uint8_t)0x06U) /**< LPTIM1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF6_TIM4 ((uint8_t)0x06U) /**< TIM4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF6_TIM5 ((uint8_t)0x06U) /**< TIM5 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF6_LPUART1 ((uint8_t)0x06U) /**< LPUART1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF6_LPUART2 ((uint8_t)0x06U) /**< LPUART2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF6_USART1 ((uint8_t)0x06U) /**< USART1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF6_UART3 ((uint8_t)0x06U) /**< UART3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF6_I2C1 ((uint8_t)0x06U) /**< I2C1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>7 */
#define GPIO_AF7_IROUT ((uint8_t)0x07U) /**< IROUT <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_LPTIM1 ((uint8_t)0x07U) /**< LPTIM1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_TIM4 ((uint8_t)0x07U) /**< TIM4 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_TIM5 ((uint8_t)0x07U) /**< TIM5 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_LPUART2 ((uint8_t)0x07U) /**< LPUART2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_UART3 ((uint8_t)0x07U) /**< UART3 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_I2C1 ((uint8_t)0x07U) /**< I2C1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_COMP1 ((uint8_t)0x07U) /**< COMP1 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
#define GPIO_AF7_COMP2 ((uint8_t)0x07U) /**< COMP2 <20><><EFBFBD>ù<EFBFBD><C3B9><EFBFBD>ӳ<EFBFBD><D3B3> */
/* <20><><EFBFBD>ù<EFBFBD><C3B9>ܼĴ<DCBC><C4B4><EFBFBD>GPIOԴѡ<D4B4><D1A1>ƫ<EFBFBD><C6AB>λ */
#define GPIO_AF_SELECT_OFFSET (0x0000000FU) /**< GPIOԴѡ<D4B4><D1A1>ƫ<EFBFBD><C6AB>λ */
/**
* @}
*/
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup GPIO_External_Functions GPIO External Functions
* @brief GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*
*/
/************************************************************************************************/
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @param mode GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_INPUT <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_OUTPUT <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_ALTERNATE <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_ANALOG ģ<EFBFBD><EFBFBD>ģʽ
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_set_pin_mode(GPIO_t *gpiox, uint32_t pin, uint32_t mode)
{
MODIFY_REG(gpiox->MODE, ((pin * pin) * GPIO_MODE_MODE0), ((pin * pin) * mode));
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_INPUT <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_OUTPUT <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_ALTERNATE <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @arg GPIO_MODE_ANALOG ģ<EFBFBD><EFBFBD>ģʽ
*/
__STATIC_INLINE uint32_t std_gpio_get_pin_mode(GPIO_t *gpiox, uint32_t pin)
{
return ((gpiox->MODE & ((pin * pin) * GPIO_MODE_MODE0)) / (pin * pin));
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin_mask GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @param output_type GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_OUTPUT_PUSHPULL <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_OUTPUT_OPENDRAIN <EFBFBD><EFBFBD>©<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_set_pin_output_type(GPIO_t *gpiox, uint32_t pin_mask, uint32_t output_type)
{
MODIFY_REG(gpiox->OTYPE, pin_mask, pin_mask * output_type);
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_OUTPUT_PUSHPULL <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_OUTPUT_OPENDRAIN <EFBFBD><EFBFBD>©<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE uint32_t std_gpio_get_pin_output_type(GPIO_t *gpiox, uint32_t pin)
{
return ((gpiox->OTYPE & (pin)) != 0U ? GPIO_OUTPUT_OPENDRAIN : GPIO_OUTPUT_PUSHPULL);
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @param pull GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_NOPULL <EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PULLUP <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PULLDOWN <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_set_pin_pull(GPIO_t *gpiox, uint32_t pin, uint32_t pull)
{
MODIFY_REG(gpiox->PUPD, ((pin * pin) * GPIO_PUPD_PUPD0), ((pin * pin) * pull));
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_NOPULL <EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PULLUP <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PULLDOWN <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE uint32_t std_gpio_get_pin_pull(GPIO_t *gpiox, uint32_t pin)
{
return ((gpiox->PUPD & ((pin * pin) * GPIO_PUPD_PUPD0)) / (pin * pin));
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>0~7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_7
* @param alternate GPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>0~7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_AF0_MCO
* @arg GPIO_AF0_SWD
* @arg ...
* @arg GPIO_AF1_IROUT
* @arg GPIO_AF1_SPI2
* @arg ...
* @arg GPIO_AF2_IROUT
* @arg GPIO_AF2_COMP2
* @arg ...
* @arg GPIO_AF3_LCD
* @arg GPIO_AF4_SPI2
* @arg GPIO_AF4_TIM3
* @arg ...
* @arg GPIO_AF5_IROUT
* @arg GPIO_AF5_MCO
* @arg ...
* @arg GPIO_AF6_LPTIM1
* @arg GPIO_AF6_TIM4
* @arg ...
* @arg GPIO_AF7_IROUT
* @arg ...
* @arg GPIO_AF7_COMP2
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_set_afpin_0_7(GPIO_t *gpiox, uint32_t pin, uint32_t alternate)
{
MODIFY_REG(gpiox->AFL, ((((pin * pin) * pin) * pin) * GPIO_AF_SELECT_OFFSET),
((((pin * pin) * pin) * pin) * alternate));
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>0~7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_7
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t GPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>0~7<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_AF0_MCO
* @arg GPIO_AF0_SWD
* @arg ...
* @arg GPIO_AF1_IROUT
* @arg GPIO_AF1_SPI2
* @arg ...
* @arg GPIO_AF2_IROUT
* @arg GPIO_AF2_COMP2
* @arg ...
* @arg GPIO_AF3_LCD
* @arg GPIO_AF4_SPI2
* @arg GPIO_AF4_TIM3
* @arg ...
* @arg GPIO_AF5_IROUT
* @arg GPIO_AF5_MCO
* @arg ...
* @arg GPIO_AF6_LPTIM1
* @arg GPIO_AF6_TIM4
* @arg ...
* @arg GPIO_AF7_IROUT
* @arg ...
* @arg GPIO_AF7_COMP2
*/
__STATIC_INLINE uint32_t std_gpio_get_afpin_0_7(GPIO_t *gpiox, uint32_t pin)
{
return ((gpiox->AFL & ((((pin * pin) * pin) * pin) * GPIO_AF_SELECT_OFFSET)) /
(((pin * pin) * pin) * pin));
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>8~15<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_8
* @arg GPIO_PIN_9
* @arg ...
* @arg GPIO_PIN_15
* @param alternate GPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>8~15<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_AF0_MCO
* @arg GPIO_AF0_SWD
* @arg ...
* @arg GPIO_AF1_IROUT
* @arg GPIO_AF1_SPI2
* @arg ...
* @arg GPIO_AF2_IROUT
* @arg GPIO_AF2_COMP2
* @arg ...
* @arg GPIO_AF3_LCD
* @arg GPIO_AF4_SPI2
* @arg GPIO_AF4_TIM3
* @arg ...
* @arg GPIO_AF5_IROUT
* @arg GPIO_AF5_MCO
* @arg ...
* @arg GPIO_AF6_LPTIM1
* @arg GPIO_AF6_TIM4
* @arg ...
* @arg GPIO_AF7_IROUT
* @arg ...
* @arg GPIO_AF7_COMP2
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_set_afpin_8_15(GPIO_t *gpiox, uint32_t pin, uint32_t alternate)
{
MODIFY_REG(gpiox->AFH, (((((pin >> 8U) * (pin >> 8U)) * (pin >> 8U)) * (pin >> 8U)) * GPIO_AF_SELECT_OFFSET),
(((((pin >> 8U) * (pin >> 8U)) * (pin >> 8U)) * (pin >> 8U)) * alternate));
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>8~15<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_8
* @arg GPIO_PIN_9
* @arg ...
* @arg GPIO_PIN_15
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval uint32_t GPIO<EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>8~15<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_AF0_MCO
* @arg GPIO_AF0_SWD
* @arg ...
* @arg GPIO_AF1_IROUT
* @arg GPIO_AF1_SPI2
* @arg ...
* @arg GPIO_AF2_IROUT
* @arg GPIO_AF2_COMP2
* @arg ...
* @arg GPIO_AF3_LCD
* @arg GPIO_AF4_SPI2
* @arg GPIO_AF4_TIM3
* @arg ...
* @arg GPIO_AF5_IROUT
* @arg GPIO_AF5_MCO
* @arg ...
* @arg GPIO_AF6_LPTIM1
* @arg GPIO_AF6_TIM4
* @arg ...
* @arg GPIO_AF7_IROUT
* @arg ...
* @arg GPIO_AF7_COMP2
*/
__STATIC_INLINE uint32_t std_gpio_get_afpin_8_15(GPIO_t *gpiox, uint32_t pin)
{
return ((gpiox->AFH & (((((pin >> 8U) * (pin >> 8U)) * (pin >> 8U)) * (pin >> 8U)) * GPIO_AF_SELECT_OFFSET)) /
((((pin >> 8U) * (pin >> 8U)) * (pin >> 8U)) * (pin >> 8U)));
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval bool GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD>ߵ<EFBFBD>ƽ
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD>͵<EFBFBD>ƽ
*/
__STATIC_INLINE bool std_gpio_get_input_pin(GPIO_t* gpiox, uint32_t pin)
{
return ((gpiox->IDR & (pin)) == (pin));
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @note <EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval bool GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD>ߵ<EFBFBD>ƽ
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD>͵<EFBFBD>ƽ
*/
__STATIC_INLINE bool std_gpio_get_output_pin(GPIO_t* gpiox, uint32_t pin)
{
return ((gpiox->ODR & (pin)) == (pin));
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @retval uint32_t GPIO<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE uint32_t std_gpio_read_input_port(GPIO_t* gpiox)
{
return (gpiox->IDR);
}
/**
* @brief <EFBFBD><EFBFBD>ȡGPIO<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @retval uint32_t GPIO<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE uint32_t std_gpio_read_output_port(GPIO_t* gpiox)
{
return (gpiox->ODR);
}
/**
* @brief д<EFBFBD><EFBFBD>GPIO<EFBFBD>˿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_write_output_port(GPIO_t* gpiox, uint32_t value)
{
gpiox->ODR = value;
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin_mask GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_set_pin(GPIO_t* gpiox, uint32_t pin_mask)
{
gpiox->BSR = pin_mask;
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin_mask GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_reset_pin(GPIO_t* gpiox, uint32_t pin_mask)
{
gpiox->BR = pin_mask;
}
/**
* @brief <EFBFBD>л<EFBFBD>GPIO<EFBFBD>˿ڸ<EFBFBD>/<EFBFBD>͵<EFBFBD>ƽ
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOB
* @arg ...
* @param pin_mask GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_0
* @arg GPIO_PIN_1
* @arg ...
* @arg GPIO_PIN_15
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_toggle_pin(GPIO_t* gpiox, uint32_t pin_mask)
{
gpiox->ODR ^= pin_mask;
}
/**
* @brief ʹ<EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOD
* @param pin_mask GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_2
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_set_highdrive_pin(GPIO_t* gpiox, uint32_t pin_mask)
{
gpiox->HDCFG |= (pin_mask);
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param gpiox GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIOA
* @arg GPIOD
* @param pin_mask GPIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg GPIO_PIN_2
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_gpio_reset_highdrive_pin(GPIO_t* gpiox, uint32_t pin_mask)
{
gpiox->HDCFG &= (~(pin_mask));
}
void std_gpio_init(GPIO_t* gpiox, std_gpio_init_t* gpio_init_param);
void std_gpio_deinit(GPIO_t* gpiox, uint32_t pin_mask);
void std_gpio_struct_init(std_gpio_init_t* gpio_init_struct);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
/**
* @}
*/
/**
* @}
*/
#endif /* CIU32L051_STD_GPIO_H */