704 lines
24 KiB
C
704 lines
24 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @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 */
|
|||
|
|
|||
|
|