/** ******************************************************************************************************* * @file fm33lg0xx_fl_gpio.h * @author FMSH Application Team * @brief Head file of GPIO FL Module ******************************************************************************************************* * @attention * * Copyright (c) [2021] [Fudan Microelectronics] * THIS SOFTWARE is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: * http://license.coscl.org.cn/MulanPSL2 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. * See the Mulan PSL v2 for more details. * ******************************************************************************************************* */ /* Define to prevent recursive inclusion---------------------------------------------------------------*/ #ifndef __FM33LG0XX_FL_GPIO_H #define __FM33LG0XX_FL_GPIO_H #ifdef __cplusplus extern "C" { #endif /* Includes -------------------------------------------------------------------------------------------*/ #include "fm33lg0xx_fl_def.h" /** @addtogroup FM33LG0XX_FL_Driver * @{ */ /** @defgroup GPIO GPIO * @brief GPIO FL driver * @{ */ /* Exported types -------------------------------------------------------------------------------------*/ /** @defgroup GPIO_FL_ES_INIT GPIO Exported Init structures * @{ */ /** * @brief FL GPIO Init Sturcture definition */ typedef struct { /*! PIN */ uint32_t pin; /*! 功能模式 */ uint32_t mode; /*! 输出类型 */ uint32_t outputType; /*! 上拉使能 */ uint32_t pull; /*! 数字功能重定向 */ uint32_t remapPin; /*! 模拟开关使能 */ uint32_t analogSwitch; } FL_GPIO_InitTypeDef; typedef struct { /*! 触发边沿 */ uint32_t polarity; } FL_WKUP_InitTypeDef; /** * @} */ /* Exported constants ---------------------------------------------------------------------------------*/ /** @defgroup GPIO_FL_Exported_Constants GPIO Exported Constants * @{ */ #define GPIO_FCR_Pos (0U) #define GPIO_FCR_Msk (0x3U << GPIO_FCR_Pos) #define GPIO_FCR GPIO_FCR_Msk #define GPIO_EXTIEDS0_Pos (0U) #define GPIO_EXTIEDS0_Msk (0x3U << GPIO_EXTIEDS0_Pos) #define GPIO_EXTIEDS0 GPIO_EXTIEDS0_Msk #define GPIO_EXTIEDS1_Pos (0U) #define GPIO_EXTIEDS1_Msk (0x3U << GPIO_EXTIEDS1_Pos) #define GPIO_EXTIEDS1 GPIO_EXTIEDS1_Msk #define GPIO_FOUTSEL_FOUT0_Pos (0U) #define GPIO_FOUTSEL_FOUT0_Msk (0xfU << GPIO_FOUTSEL_FOUT0_Pos) #define GPIO_FOUTSEL_FOUT0 GPIO_FOUTSEL_FOUT0_Msk #define GPIO_FOUTSEL_FOUT1_Pos (4U) #define GPIO_FOUTSEL_FOUT1_Msk (0xfU << GPIO_FOUTSEL_FOUT1_Pos) #define GPIO_FOUTSEL_FOUT1 GPIO_FOUTSEL_FOUT1_Msk #define GPIO_EXTISEL0_EXTI0_Pos (0U) #define GPIO_EXTISEL0_EXTI0_Msk (0x3U << GPIO_EXTISEL0_EXTI0_Pos) #define GPIO_EXTISEL0_EXTI0 GPIO_EXTISEL0_EXTI0_Msk #define GPIO_EXTISEL0_EXTI1_Pos (2U) #define GPIO_EXTISEL0_EXTI1_Msk (0x3U << GPIO_EXTISEL0_EXTI1_Pos) #define GPIO_EXTISEL0_EXTI1 GPIO_EXTISEL0_EXTI1_Msk #define GPIO_EXTISEL0_EXTI2_Pos (4U) #define GPIO_EXTISEL0_EXTI2_Msk (0x3U << GPIO_EXTISEL0_EXTI2_Pos) #define GPIO_EXTISEL0_EXTI2 GPIO_EXTISEL0_EXTI2_Msk #define GPIO_EXTISEL0_EXTI3_Pos (6U) #define GPIO_EXTISEL0_EXTI3_Msk (0x3U << GPIO_EXTISEL0_EXTI3_Pos) #define GPIO_EXTISEL0_EXTI3 GPIO_EXTISEL0_EXTI3_Msk #define GPIO_EXTISEL0_EXTI4_Pos (8U) #define GPIO_EXTISEL0_EXTI4_Msk (0x3U << GPIO_EXTISEL0_EXTI4_Pos) #define GPIO_EXTISEL0_EXTI4 GPIO_EXTISEL0_EXTI4_Msk #define GPIO_EXTISEL0_EXTI5_Pos (10U) #define GPIO_EXTISEL0_EXTI5_Msk (0x3U << GPIO_EXTISEL0_EXTI5_Pos) #define GPIO_EXTISEL0_EXTI5 GPIO_EXTISEL0_EXTI5_Msk #define GPIO_EXTISEL0_EXTI6_Pos (12U) #define GPIO_EXTISEL0_EXTI6_Msk (0x3U << GPIO_EXTISEL0_EXTI6_Pos) #define GPIO_EXTISEL0_EXTI6 GPIO_EXTISEL0_EXTI6_Msk #define GPIO_EXTISEL0_EXTI7_Pos (14U) #define GPIO_EXTISEL0_EXTI7_Msk (0x3U << GPIO_EXTISEL0_EXTI7_Pos) #define GPIO_EXTISEL0_EXTI7 GPIO_EXTISEL0_EXTI7_Msk #define GPIO_EXTISEL0_EXTI8_Pos (16U) #define GPIO_EXTISEL0_EXTI8_Msk (0x3U << GPIO_EXTISEL0_EXTI8_Pos) #define GPIO_EXTISEL0_EXTI8 GPIO_EXTISEL0_EXTI8_Msk #define GPIO_EXTISEL0_EXTI9_Pos (18U) #define GPIO_EXTISEL0_EXTI9_Msk (0x3U << GPIO_EXTISEL0_EXTI9_Pos) #define GPIO_EXTISEL0_EXTI9 GPIO_EXTISEL0_EXTI9_Msk #define GPIO_EXTISEL0_EXTI10_Pos (20U) #define GPIO_EXTISEL0_EXTI10_Msk (0x3U << GPIO_EXTISEL0_EXTI10_Pos) #define GPIO_EXTISEL0_EXTI10 GPIO_EXTISEL0_EXTI10_Msk #define GPIO_EXTISEL0_EXTI11_Pos (22U) #define GPIO_EXTISEL0_EXTI11_Msk (0x3U << GPIO_EXTISEL0_EXTI11_Pos) #define GPIO_EXTISEL0_EXTI11 GPIO_EXTISEL0_EXTI11_Msk #define GPIO_EXTISEL0_EXTI12_Pos (24U) #define GPIO_EXTISEL0_EXTI12_Msk (0x3U << GPIO_EXTISEL0_EXTI12_Pos) #define GPIO_EXTISEL0_EXTI12 GPIO_EXTISEL0_EXTI12_Msk #define GPIO_EXTISEL0_EXTI13_Pos (26U) #define GPIO_EXTISEL0_EXTI13_Msk (0x3U << GPIO_EXTISEL0_EXTI13_Pos) #define GPIO_EXTISEL0_EXTI13 GPIO_EXTISEL0_EXTI13_Msk #define GPIO_EXTISEL0_EXTI14_Pos (28U) #define GPIO_EXTISEL0_EXTI14_Msk (0x3U << GPIO_EXTISEL0_EXTI14_Pos) #define GPIO_EXTISEL0_EXTI14 GPIO_EXTISEL0_EXTI14_Msk #define GPIO_EXTISEL0_EXTI15_Pos (30U) #define GPIO_EXTISEL0_EXTI15_Msk (0x3U << GPIO_EXTISEL0_EXTI15_Pos) #define GPIO_EXTISEL0_EXTI15 GPIO_EXTISEL0_EXTI15_Msk #define GPIO_EXTISEL1_EXTI16_Pos (0U) #define GPIO_EXTISEL1_EXTI16_Msk (0x3U << GPIO_EXTISEL1_EXTI16_Pos) #define GPIO_EXTISEL1_EXTI16 GPIO_EXTISEL1_EXTI16_Msk #define GPIO_EXTISEL1_EXTI17_Pos (2U) #define GPIO_EXTISEL1_EXTI17_Msk (0x3U << GPIO_EXTISEL1_EXTI17_Pos) #define GPIO_EXTISEL1_EXTI17 GPIO_EXTISEL1_EXTI17_Msk #define GPIO_EXTISEL1_EXTI18_Pos (4U) #define GPIO_EXTISEL1_EXTI18_Msk (0x3U << GPIO_EXTISEL1_EXTI18_Pos) #define GPIO_EXTISEL1_EXTI18 GPIO_EXTISEL1_EXTI18_Msk #define GPIO_PINWKEN_EN_Pos (0U) #define GPIO_PINWKEN_EN_Msk (0x3ffU << GPIO_PINWKEN_EN_Pos) #define GPIO_PINWKEN_EN GPIO_PINWKEN_EN_Msk #define GPIO_PINWKEN_WKISEL_Pos (31U) #define GPIO_PINWKEN_WKISEL_Msk (0x1U << GPIO_PINWKEN_WKISEL_Pos) #define GPIO_PINWKEN_WKISEL GPIO_PINWKEN_WKISEL_Msk #define GPIO_PINWKEN_SEL_Pos (10U) #define GPIO_PINWKEN_SEL_Msk (0x3U << GPIO_PINWKEN_SEL_Pos) #define GPIO_PINWKEN_SEL GPIO_PINWKEN_SEL_Msk #define FL_GPIO_PIN_0 (0x1U << 0U) #define FL_GPIO_PIN_1 (0x1U << 1U) #define FL_GPIO_PIN_2 (0x1U << 2U) #define FL_GPIO_PIN_3 (0x1U << 3U) #define FL_GPIO_PIN_4 (0x1U << 4U) #define FL_GPIO_PIN_5 (0x1U << 5U) #define FL_GPIO_PIN_6 (0x1U << 6U) #define FL_GPIO_PIN_7 (0x1U << 7U) #define FL_GPIO_PIN_8 (0x1U << 8U) #define FL_GPIO_PIN_9 (0x1U << 9U) #define FL_GPIO_PIN_10 (0x1U << 10U) #define FL_GPIO_PIN_11 (0x1U << 11U) #define FL_GPIO_PIN_12 (0x1U << 12U) #define FL_GPIO_PIN_13 (0x1U << 13U) #define FL_GPIO_PIN_14 (0x1U << 14U) #define FL_GPIO_PIN_15 (0x1U << 15U) #define FL_GPIO_PIN_ALL (0xffffU << 0U) #define FL_GPIO_EXTI_LINE_0 (0x1U << 0U) #define FL_GPIO_EXTI_LINE_1 (0x1U << 1U) #define FL_GPIO_EXTI_LINE_2 (0x1U << 2U) #define FL_GPIO_EXTI_LINE_3 (0x1U << 3U) #define FL_GPIO_EXTI_LINE_4 (0x1U << 4U) #define FL_GPIO_EXTI_LINE_5 (0x1U << 5U) #define FL_GPIO_EXTI_LINE_6 (0x1U << 6U) #define FL_GPIO_EXTI_LINE_7 (0x1U << 7U) #define FL_GPIO_EXTI_LINE_8 (0x1U << 8U) #define FL_GPIO_EXTI_LINE_9 (0x1U << 9U) #define FL_GPIO_EXTI_LINE_10 (0x1U << 10U) #define FL_GPIO_EXTI_LINE_11 (0x1U << 11U) #define FL_GPIO_EXTI_LINE_12 (0x1U << 12U) #define FL_GPIO_EXTI_LINE_13 (0x1U << 13U) #define FL_GPIO_EXTI_LINE_14 (0x1U << 14U) #define FL_GPIO_EXTI_LINE_15 (0x1U << 15U) #define FL_GPIO_EXTI_LINE_16 (0x1U << 16U) #define FL_GPIO_EXTI_LINE_17 (0x1U << 17U) #define FL_GPIO_EXTI_LINE_18 (0x1U << 18U) #define FL_GPIO_EXTI_LINE_ALL (0x7ffffU << 0U) #define FL_GPIO_EXTI_LINE_0_PA0 (0x0U << 0U) #define FL_GPIO_EXTI_LINE_0_PA1 (0x1U << 0U) #define FL_GPIO_EXTI_LINE_0_PA2 (0x2U << 0U) #define FL_GPIO_EXTI_LINE_0_PA3 (0x3U << 0U) #define FL_GPIO_EXTI_LINE_1_PA4 (0x0U << 2U) #define FL_GPIO_EXTI_LINE_1_PA5 (0x1U << 2U) #define FL_GPIO_EXTI_LINE_1_PA6 (0x2U << 2U) #define FL_GPIO_EXTI_LINE_1_PA7 (0x3U << 2U) #define FL_GPIO_EXTI_LINE_2_PA8 (0x0U << 4U) #define FL_GPIO_EXTI_LINE_2_PA9 (0x1U << 4U) #define FL_GPIO_EXTI_LINE_2_PA10 (0x2U << 4U) #define FL_GPIO_EXTI_LINE_2_PA11 (0x3U << 4U) #define FL_GPIO_EXTI_LINE_3_PA12 (0x0U << 6U) #define FL_GPIO_EXTI_LINE_3_PA13 (0x1U << 6U) #define FL_GPIO_EXTI_LINE_3_PA14 (0x2U << 6U) #define FL_GPIO_EXTI_LINE_3_PA15 (0x3U << 6U) #define FL_GPIO_EXTI_LINE_4_PB0 (0x0U << 8U) #define FL_GPIO_EXTI_LINE_4_PB1 (0x1U << 8U) #define FL_GPIO_EXTI_LINE_4_PB2 (0x2U << 8U) #define FL_GPIO_EXTI_LINE_4_PB3 (0x3U << 8U) #define FL_GPIO_EXTI_LINE_5_PB4 (0x0U << 10U) #define FL_GPIO_EXTI_LINE_5_PB5 (0x1U << 10U) #define FL_GPIO_EXTI_LINE_5_PB6 (0x2U << 10U) #define FL_GPIO_EXTI_LINE_5_PB7 (0x3U << 10U) #define FL_GPIO_EXTI_LINE_6_PB8 (0x0U << 12U) #define FL_GPIO_EXTI_LINE_6_PB9 (0x1U << 12U) #define FL_GPIO_EXTI_LINE_6_PB10 (0x2U << 12U) #define FL_GPIO_EXTI_LINE_6_PB11 (0x3U << 12U) #define FL_GPIO_EXTI_LINE_7_PB12 (0x0U << 14U) #define FL_GPIO_EXTI_LINE_7_PB13 (0x1U << 14U) #define FL_GPIO_EXTI_LINE_7_PB14 (0x2U << 14U) #define FL_GPIO_EXTI_LINE_7_PB15 (0x3U << 14U) #define FL_GPIO_EXTI_LINE_8_PC0 (0x0U << 16U) #define FL_GPIO_EXTI_LINE_8_PC1 (0x1U << 16U) #define FL_GPIO_EXTI_LINE_8_PC2 (0x2U << 16U) #define FL_GPIO_EXTI_LINE_8_PC3 (0x3U << 16U) #define FL_GPIO_EXTI_LINE_9_PC4 (0x0U << 18U) #define FL_GPIO_EXTI_LINE_9_PC5 (0x1U << 18U) #define FL_GPIO_EXTI_LINE_9_PC6 (0x2U << 18U) #define FL_GPIO_EXTI_LINE_9_PC7 (0x3U << 18U) #define FL_GPIO_EXTI_LINE_10_PC8 (0x0U << 20U) #define FL_GPIO_EXTI_LINE_10_PC9 (0x1U << 20U) #define FL_GPIO_EXTI_LINE_10_PC10 (0x2U << 20U) #define FL_GPIO_EXTI_LINE_10_PC11 (0x3U << 20U) #define FL_GPIO_EXTI_LINE_11_PC12 (0x0U << 22U) #define FL_GPIO_EXTI_LINE_11_PC13 (0x1U << 22U) #define FL_GPIO_EXTI_LINE_11_PC14 (0x2U << 22U) #define FL_GPIO_EXTI_LINE_11_PC15 (0x3U << 22U) #define FL_GPIO_EXTI_LINE_12_PD0 (0x0U << 24U) #define FL_GPIO_EXTI_LINE_12_PD1 (0x1U << 24U) #define FL_GPIO_EXTI_LINE_12_PD2 (0x2U << 24U) #define FL_GPIO_EXTI_LINE_12_PD3 (0x3U << 24U) #define FL_GPIO_EXTI_LINE_13_PD4 (0x0U << 26U) #define FL_GPIO_EXTI_LINE_13_PD5 (0x1U << 26U) #define FL_GPIO_EXTI_LINE_13_PD6 (0x2U << 26U) #define FL_GPIO_EXTI_LINE_13_PD7 (0x3U << 26U) #define FL_GPIO_EXTI_LINE_14_PD8 (0x0U << 28U) #define FL_GPIO_EXTI_LINE_14_PD9 (0x1U << 28U) #define FL_GPIO_EXTI_LINE_14_PD10 (0x2U << 28U) #define FL_GPIO_EXTI_LINE_14_PD11 (0x3U << 28U) #define FL_GPIO_EXTI_LINE_15_PD12 (0x0U << 30U) #define FL_GPIO_EXTI_LINE_16_PE0 (0x0U << 0U) #define FL_GPIO_EXTI_LINE_16_PE1 (0x1U << 0U) #define FL_GPIO_EXTI_LINE_16_PE2 (0x2U << 0U) #define FL_GPIO_EXTI_LINE_16_PE3 (0x3U << 0U) #define FL_GPIO_EXTI_LINE_17_PE5 (0x1U << 2U) #define FL_GPIO_EXTI_LINE_17_PE6 (0x2U << 2U) #define FL_GPIO_EXTI_LINE_17_PE7 (0x3U << 2U) #define FL_GPIO_EXTI_LINE_18_PE8 (0x0U << 4U) #define FL_GPIO_EXTI_LINE_18_PE9 (0x1U << 4U) #define FL_GPIO_WAKEUP_0 (0x1U << 0U) #define FL_GPIO_WAKEUP_1 (0x1U << 1U) #define FL_GPIO_WAKEUP_2 (0x1U << 2U) #define FL_GPIO_WAKEUP_3 (0x1U << 3U) #define FL_GPIO_WAKEUP_4 (0x1U << 4U) #define FL_GPIO_WAKEUP_5 (0x1U << 5U) #define FL_GPIO_WAKEUP_6 (0x1U << 6U) #define FL_GPIO_WAKEUP_7 (0x1U << 7U) #define FL_GPIO_WAKEUP_8 (0x1U << 8U) #define FL_GPIO_WAKEUP_9 (0x1U << 9U) #define FL_GPIO_OUTPUT_PUSHPULL (0) #define FL_GPIO_OUTPUT_OPENDRAIN (1) #define FL_GPIO_MODE_INPUT (0x0U << GPIO_FCR_Pos) #define FL_GPIO_MODE_OUTPUT (0x1U << GPIO_FCR_Pos) #define FL_GPIO_MODE_DIGITAL (0x2U << GPIO_FCR_Pos) #define FL_GPIO_MODE_ANALOG (0x3U << GPIO_FCR_Pos) #define FL_GPIO_EXTI_TRIGGER_EDGE_RISING (0x0U << GPIO_EXTIEDS0_Pos) #define FL_GPIO_EXTI_TRIGGER_EDGE_FALLING (0x1U << GPIO_EXTIEDS0_Pos) #define FL_GPIO_EXTI_TRIGGER_EDGE_BOTH (0x2U << GPIO_EXTIEDS0_Pos) #define FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE (0x3U << GPIO_EXTIEDS0_Pos) #define FL_GPIO_FOUT0_SELECT_XTLF (0x0U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_RCLP (0x1U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_RCHF_DIV64 (0x2U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_LSCLK (0x3U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64 (0x4U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_RTCTM (0x5U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64 (0x6U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_RTCCLK64HZ (0x7U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_APBCLK_DIV64 (0x8U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_PLLOUTPUT (0x9U << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_RCLF (0xaU << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_RCHF (0xbU << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_XTHF_DIV64 (0xcU << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_COMP1O (0xdU << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_CLK_8K (0xeU << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT0_SELECT_ADC_CLK (0xfU << GPIO_FOUTSEL_FOUT0_Pos) #define FL_GPIO_FOUT1_SELECT_XTLF (0x0U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_RCLP (0x1U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_ADCCLK (0x2U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_LSCLK (0x3U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_EOC (0x4U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_RTCTM (0x5U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64 (0x6U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_EOCAL (0x7U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_APBCLK_DIV64 (0x8U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_ROSC_TDLV (0x9U << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_RCLF (0xaU << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_RCHF (0xbU << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_XTHF_DIV64 (0xcU << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64 (0xdU << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_CLK_8K (0xeU << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_FOUT1_SELECT_ROSC_TDHV (0xfU << GPIO_FOUTSEL_FOUT1_Pos) #define FL_GPIO_WAKEUP_INT_ENTRY_NMI (0x0U << GPIO_PINWKEN_WKISEL_Pos) #define FL_GPIO_WAKEUP_INT_ENTRY_38 (0x1U << GPIO_PINWKEN_WKISEL_Pos) #define FL_GPIO_WAKEUP_TRIGGER_RISING (0x1U << GPIO_PINWKEN_SEL_Pos) #define FL_GPIO_WAKEUP_TRIGGER_FALLING (0x0U << GPIO_PINWKEN_SEL_Pos) #define FL_GPIO_WAKEUP_TRIGGER_BOTH (0x2U << GPIO_PINWKEN_SEL_Pos) /** * @} */ /* Exported functions ---------------------------------------------------------------------------------*/ /** @defgroup GPIO_FL_Exported_Functions GPIO Exported Functions * @{ */ /** * @brief GPIOx input enable * @rmtoll INEN FL_GPIO_EnablePinInput * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_EnablePinInput(GPIO_Type *GPIOx, uint32_t pin) { SET_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U)); } /** * @brief CPIOx input disable * @rmtoll INEN FL_GPIO_DisablePinInput * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_DisablePinInput(GPIO_Type *GPIOx, uint32_t pin) { CLEAR_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U)); } /** * @brief Get GPIOx input enable status * @rmtoll INEN FL_GPIO_IsEnabledPinInput * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinInput(GPIO_Type *GPIOx, uint32_t pin) { return (uint32_t)(READ_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U)); } /** * @brief GPIOx Pull-Up enable * @rmtoll PUEN FL_GPIO_EnablePinPullup * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_EnablePinPullup(GPIO_Type *GPIOx, uint32_t pin) { SET_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U)); } /** * @brief GPIOx Pull-Up disable * @rmtoll PUEN FL_GPIO_DisablePinPullup * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_DisablePinPullup(GPIO_Type *GPIOx, uint32_t pin) { CLEAR_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U)); } /** * @brief Get GPIOx Pull-Up enable status * @rmtoll PUEN FL_GPIO_IsEnabledPinPullup * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinPullup(GPIO_Type *GPIOx, uint32_t pin) { return (uint32_t)(READ_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U)); } /** * @brief GPIOx Open-Drain enable * @rmtoll ODEN FL_GPIO_EnablePinOpenDrain * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_EnablePinOpenDrain(GPIO_Type *GPIOx, uint32_t pin) { SET_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U)); } /** * @brief Open-Drain disable * @rmtoll ODEN FL_GPIO_DisablePinOpenDrain * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_DisablePinOpenDrain(GPIO_Type *GPIOx, uint32_t pin) { CLEAR_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U)); } /** * @brief Get Open-Drain enable status * @rmtoll ODEN FL_GPIO_IsEnabledPinOpenDrain * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinOpenDrain(GPIO_Type *GPIOx, uint32_t pin) { return (uint32_t)(READ_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U)); } /** * @brief GPIOx digital function enable * @rmtoll DFS FL_GPIO_EnablePinRemap * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_EnablePinRemap(GPIO_Type *GPIOx, uint32_t pin) { SET_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U)); } /** * @brief GPIOx digital function disable * @rmtoll DFS FL_GPIO_DisablePinRemap * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_DisablePinRemap(GPIO_Type *GPIOx, uint32_t pin) { CLEAR_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U)); } /** * @brief Get GPIOx digital function enable status * @rmtoll DFS FL_GPIO_IsEnabledPinRemap * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinRemap(GPIO_Type *GPIOx, uint32_t pin) { return (uint32_t)(READ_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U)); } /** * @brief GPIOx analog channel enable * @rmtoll ANEN FL_GPIO_EnablePinAnalogSwitch * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_EnablePinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin) { SET_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U)); } /** * @brief GPIOx analog channel disable * @rmtoll ANEN FL_GPIO_DisablePinAnalogSwitch * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_DisablePinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin) { CLEAR_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U)); } /** * @brief Get GPIOx analog channel enable status * @rmtoll ANEN FL_GPIO_IsEnabledPinAnalogSwitch * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin) { return (uint32_t)(READ_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U)); } /** * @brief Set Portx mode * @rmtoll FCR FL_GPIO_SetPinMode * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @param mode This parameter can be one of the following values: * @arg @ref FL_GPIO_MODE_INPUT * @arg @ref FL_GPIO_MODE_OUTPUT * @arg @ref FL_GPIO_MODE_DIGITAL * @arg @ref FL_GPIO_MODE_ANALOG * @retval None */ __STATIC_INLINE void FL_GPIO_SetPinMode(GPIO_Type *GPIOx, uint32_t pin, uint32_t mode) { MODIFY_REG(GPIOx->FCR, ((pin * pin) * GPIO_FCR), ((pin * pin) * mode)); } /** * @brief Get Portx mode * @rmtoll FCR FL_GPIO_GetPinMode * @param GPIOx GPIO Port * @param Pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @retval Returned value can be one of the following values: * @arg @ref FL_GPIO_MODE_INPUT * @arg @ref FL_GPIO_MODE_OUTPUT * @arg @ref FL_GPIO_MODE_DIGITAL * @arg @ref FL_GPIO_MODE_ANALOG */ __STATIC_INLINE uint32_t FL_GPIO_GetPinMode(GPIO_Type *GPIOx, uint32_t Pin) { return (uint32_t)(READ_BIT(GPIOx->FCR, ((Pin * Pin) * GPIO_FCR)) / (Pin * Pin)); } /** * @brief Set GPIO output data * @rmtoll DO FL_GPIO_WriteOutputPort * @param GPIOx GPIO Port * @param output Level value for each pin of the port * @retval None */ __STATIC_INLINE void FL_GPIO_WriteOutputPort(GPIO_Type *GPIOx, uint32_t output) { MODIFY_REG(GPIOx->DO, (0xffffU << 0U), (output << 0U)); } /** * @brief Get GPIO output data * @rmtoll DO FL_GPIO_ReadOutputPort * @param GPIOx GPIO Port * @retval Output data register value of port */ __STATIC_INLINE uint32_t FL_GPIO_ReadOutputPort(GPIO_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->DO, (0xffffU << 0U)) >> 0U); } /** * @brief Get GPIO output pin status * @rmtoll DO FL_GPIO_GetOutputPin * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_GetOutputPin(GPIO_Type *GPIOx, uint32_t pin) { return (uint32_t)(READ_BIT(GPIOx->DO, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U)); } /** * @brief Toggle output pin * @rmtoll DO FL_GPIO_ToggleOutputPin * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_ToggleOutputPin(GPIO_Type *GPIOx, uint32_t pin) { if(pin & GPIOx->DO) { WRITE_REG(GPIOx->DRST, pin); } else { WRITE_REG(GPIOx->DSET, pin); } } /** * @brief Get input data * @rmtoll DIN FL_GPIO_ReadInputPort * @param GPIOx GPIO Port * @retval Input data register value of port */ __STATIC_INLINE uint32_t FL_GPIO_ReadInputPort(GPIO_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->DIN, (0xffffU << 0U)) >> 0U); } /** * @brief Get GPIO input set status * @rmtoll DIN FL_GPIO_GetInputPin * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_GetInputPin(GPIO_Type *GPIOx, uint32_t pin) { return (uint32_t)(READ_BIT(GPIOx->DIN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U)); } /** * @brief Set pin output 1 * @rmtoll DSET FL_GPIO_SetOutputPin * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_SetOutputPin(GPIO_Type *GPIOx, uint32_t pin) { SET_BIT(GPIOx->DSET, ((pin & 0xffff) << 0x0U)); } /** * @brief Set pin output 0 * @rmtoll DRST FL_GPIO_ResetOutputPin * @param GPIOx GPIO Port * @param pin This parameter can be one of the following values: * @arg @ref FL_GPIO_PIN_0 * @arg @ref FL_GPIO_PIN_1 * @arg @ref FL_GPIO_PIN_2 * @arg @ref FL_GPIO_PIN_3 * @arg @ref FL_GPIO_PIN_4 * @arg @ref FL_GPIO_PIN_5 * @arg @ref FL_GPIO_PIN_6 * @arg @ref FL_GPIO_PIN_7 * @arg @ref FL_GPIO_PIN_8 * @arg @ref FL_GPIO_PIN_9 * @arg @ref FL_GPIO_PIN_10 * @arg @ref FL_GPIO_PIN_11 * @arg @ref FL_GPIO_PIN_12 * @arg @ref FL_GPIO_PIN_13 * @arg @ref FL_GPIO_PIN_14 * @arg @ref FL_GPIO_PIN_15 * @arg @ref FL_GPIO_PIN_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_ResetOutputPin(GPIO_Type *GPIOx, uint32_t pin) { SET_BIT(GPIOx->DRST, ((pin & 0xffff) << 0x0U)); } /** * @brief EXTI edge0 select * @rmtoll EXTIEDS0 FL_GPIO_SetTriggerEdge0 * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @param edge This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE * @retval None */ __STATIC_INLINE void FL_GPIO_SetTriggerEdge0(GPIO_COMMON_Type *GPIOx, uint32_t line, uint32_t edge) { MODIFY_REG(GPIOx->EXTIEDS0, ((line * line) * GPIO_EXTIEDS0), ((line * line) * edge)); } /** * @brief Get EXTI edge0 select * @rmtoll EXTIEDS0 FL_GPIO_GetTriggerEdge0 * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @retval Returned value can be one of the following values: * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE */ __STATIC_INLINE uint32_t FL_GPIO_GetTriggerEdge0(GPIO_COMMON_Type *GPIOx, uint32_t line) { return (uint32_t)(READ_BIT(GPIOx->EXTIEDS0, ((line * line) * GPIO_EXTIEDS0)) / (line * line)); } /** * @brief EXTI edge1 select * @rmtoll EXTIEDS1 FL_GPIO_SetTriggerEdge1 * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @param edge This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE * @retval None */ __STATIC_INLINE void FL_GPIO_SetTriggerEdge1(GPIO_COMMON_Type *GPIOx, uint32_t line, uint32_t edge) { MODIFY_REG(GPIOx->EXTIEDS1, (((line >> 16) * (line >> 16)) * GPIO_EXTIEDS1), (((line >> 16) * (line >> 16)) * edge)); } /** * @brief Get EXTI edge1 select * @rmtoll EXTIEDS1 FL_GPIO_GetTriggerEdge1 * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @retval Returned value can be one of the following values: * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE */ __STATIC_INLINE uint32_t FL_GPIO_GetTriggerEdge1(GPIO_COMMON_Type *GPIOx, uint32_t line) { return (uint32_t)(READ_BIT(GPIOx->EXTIEDS1, (((line >> 16) * (line >> 16)) * GPIO_EXTIEDS1)) / ((line >> 16) * (line >> 16))); } /** * @brief EXTI digital filter enable * @rmtoll EXTIDF FL_GPIO_EnableDigitalFilter * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @arg @ref FL_GPIO_EXTI_LINE_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_EnableDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line) { SET_BIT(GPIOx->EXTIDF, ((line & 0x7ffff) << 0x0U)); } /** * @brief EXTI digital filter disable * @rmtoll EXTIDF FL_GPIO_DisableDigitalFilter * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @arg @ref FL_GPIO_EXTI_LINE_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_DisableDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line) { CLEAR_BIT(GPIOx->EXTIDF, ((line & 0x7ffff) << 0x0U)); } /** * @brief Get EXTI digital filter enable status * @rmtoll EXTIDF FL_GPIO_IsEnabledDigitalFilter * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @arg @ref FL_GPIO_EXTI_LINE_ALL * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsEnabledDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line) { return (uint32_t)(READ_BIT(GPIOx->EXTIDF, ((line & 0x7ffff) << 0x0U)) == ((line & 0x7ffff) << 0x0U)); } /** * @brief Get external interrupt flag status * @rmtoll EXTIISR FL_GPIO_IsActiveFlag_EXTI * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @arg @ref FL_GPIO_EXTI_LINE_ALL * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsActiveFlag_EXTI(GPIO_COMMON_Type *GPIOx, uint32_t line) { return (uint32_t)(READ_BIT(GPIOx->EXTIISR, ((line & 0x7ffff) << 0x0U)) == ((line & 0x7ffff) << 0x0U)); } /** * @brief Clear external interrupt flag * @rmtoll EXTIISR FL_GPIO_ClearFlag_EXTI * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @arg @ref FL_GPIO_EXTI_LINE_ALL * @retval None */ __STATIC_INLINE void FL_GPIO_ClearFlag_EXTI(GPIO_COMMON_Type *GPIOx, uint32_t line) { WRITE_REG(GPIOx->EXTIISR, ((line & 0x7ffff) << 0x0U)); } /** * @brief Get EXTI input set status * @rmtoll EXTIDI FL_GPIO_GetEXTILine * @param GPIOx GPIO Port * @param line This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0 * @arg @ref FL_GPIO_EXTI_LINE_1 * @arg @ref FL_GPIO_EXTI_LINE_2 * @arg @ref FL_GPIO_EXTI_LINE_3 * @arg @ref FL_GPIO_EXTI_LINE_4 * @arg @ref FL_GPIO_EXTI_LINE_5 * @arg @ref FL_GPIO_EXTI_LINE_6 * @arg @ref FL_GPIO_EXTI_LINE_7 * @arg @ref FL_GPIO_EXTI_LINE_8 * @arg @ref FL_GPIO_EXTI_LINE_9 * @arg @ref FL_GPIO_EXTI_LINE_10 * @arg @ref FL_GPIO_EXTI_LINE_11 * @arg @ref FL_GPIO_EXTI_LINE_12 * @arg @ref FL_GPIO_EXTI_LINE_13 * @arg @ref FL_GPIO_EXTI_LINE_14 * @arg @ref FL_GPIO_EXTI_LINE_15 * @arg @ref FL_GPIO_EXTI_LINE_16 * @arg @ref FL_GPIO_EXTI_LINE_17 * @arg @ref FL_GPIO_EXTI_LINE_18 * @arg @ref FL_GPIO_EXTI_LINE_ALL * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_GetEXTILine(GPIO_COMMON_Type *GPIOx, uint32_t line) { return (uint32_t)(READ_BIT(GPIOx->EXTIDI, ((line & 0x7ffff) << 0x0U)) == ((line & 0x7ffff) << 0x0U)); } /** * @brief Get EXTI input status * @rmtoll EXTIDI FL_GPIO_ReadEXTILines * @param GPIOx GPIO Port * @retval EXTI data register value of port */ __STATIC_INLINE uint32_t FL_GPIO_ReadEXTILines(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTIDI, (0x7ffffU << 0U)) >> 0U); } /** * @brief Set FOUT0 frequency output * @rmtoll FOUTSEL FOUT0 FL_GPIO_SetFOUT0 * @param GPIOx GPIO Port * @param select This parameter can be one of the following values: * @arg @ref FL_GPIO_FOUT0_SELECT_XTLF * @arg @ref FL_GPIO_FOUT0_SELECT_RCLP * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_LSCLK * @arg @ref FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCTM * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCCLK64HZ * @arg @ref FL_GPIO_FOUT0_SELECT_APBCLK_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT * @arg @ref FL_GPIO_FOUT0_SELECT_RCLF * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF * @arg @ref FL_GPIO_FOUT0_SELECT_XTHF_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_COMP1O * @arg @ref FL_GPIO_FOUT0_SELECT_CLK_8K * @arg @ref FL_GPIO_FOUT0_SELECT_ADC_CLK * @retval None */ __STATIC_INLINE void FL_GPIO_SetFOUT0(GPIO_COMMON_Type *GPIOx, uint32_t select) { MODIFY_REG(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT0_Msk, select); } /** * @brief Get FOUT0 frequency output * @rmtoll FOUTSEL FOUT0 FL_GPIO_GetFOUT0 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: * @arg @ref FL_GPIO_FOUT0_SELECT_XTLF * @arg @ref FL_GPIO_FOUT0_SELECT_RCLP * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_LSCLK * @arg @ref FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCTM * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCCLK64HZ * @arg @ref FL_GPIO_FOUT0_SELECT_APBCLK_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT * @arg @ref FL_GPIO_FOUT0_SELECT_RCLF * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF * @arg @ref FL_GPIO_FOUT0_SELECT_XTHF_DIV64 * @arg @ref FL_GPIO_FOUT0_SELECT_COMP1O * @arg @ref FL_GPIO_FOUT0_SELECT_CLK_8K * @arg @ref FL_GPIO_FOUT0_SELECT_ADC_CLK */ __STATIC_INLINE uint32_t FL_GPIO_GetFOUT0(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT0_Msk)); } /** * @brief Set FOUT1 frequency output * @rmtoll FOUTSEL FOUT1 FL_GPIO_SetFOUT1 * @param GPIOx GPIO Port * @param select This parameter can be one of the following values: * @arg @ref FL_GPIO_FOUT1_SELECT_XTLF * @arg @ref FL_GPIO_FOUT1_SELECT_RCLP * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK * @arg @ref FL_GPIO_FOUT1_SELECT_LSCLK * @arg @ref FL_GPIO_FOUT1_SELECT_EOC * @arg @ref FL_GPIO_FOUT1_SELECT_RTCTM * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_EOCAL * @arg @ref FL_GPIO_FOUT1_SELECT_APBCLK_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_ROSC_TDLV * @arg @ref FL_GPIO_FOUT1_SELECT_RCLF * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF * @arg @ref FL_GPIO_FOUT1_SELECT_XTHF_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_CLK_8K * @arg @ref FL_GPIO_FOUT1_SELECT_ROSC_TDHV * @retval None */ __STATIC_INLINE void FL_GPIO_SetFOUT1(GPIO_COMMON_Type *GPIOx, uint32_t select) { MODIFY_REG(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT1_Msk, select); } /** * @brief Get FOUT1 frequency output * @rmtoll FOUTSEL FOUT1 FL_GPIO_GetFOUT1 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: * @arg @ref FL_GPIO_FOUT1_SELECT_XTLF * @arg @ref FL_GPIO_FOUT1_SELECT_RCLP * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK * @arg @ref FL_GPIO_FOUT1_SELECT_LSCLK * @arg @ref FL_GPIO_FOUT1_SELECT_EOC * @arg @ref FL_GPIO_FOUT1_SELECT_RTCTM * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_EOCAL * @arg @ref FL_GPIO_FOUT1_SELECT_APBCLK_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_ROSC_TDLV * @arg @ref FL_GPIO_FOUT1_SELECT_RCLF * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF * @arg @ref FL_GPIO_FOUT1_SELECT_XTHF_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64 * @arg @ref FL_GPIO_FOUT1_SELECT_CLK_8K * @arg @ref FL_GPIO_FOUT1_SELECT_ROSC_TDHV */ __STATIC_INLINE uint32_t FL_GPIO_GetFOUT1(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT1_Msk)); } /** * @brief Set EXTI0 interrupt input * @rmtoll EXTISEL0 EXTI0 FL_GPIO_SetExtiLine0 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_0_PA0 * @arg @ref FL_GPIO_EXTI_LINE_0_PA1 * @arg @ref FL_GPIO_EXTI_LINE_0_PA2 * @arg @ref FL_GPIO_EXTI_LINE_0_PA3 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine0(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI0_Msk, EXTIPin); } /** * @brief Get EXTI0 interrupt input * @rmtoll EXTISEL0 EXTI0 FL_GPIO_GetExtiLine0 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine0(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI0_Msk)); } /** * @brief Set EXTI1 interrupt input * @rmtoll EXTISEL0 EXTI1 FL_GPIO_SetExtiLine1 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_1_PA4 * @arg @ref FL_GPIO_EXTI_LINE_1_PA5 * @arg @ref FL_GPIO_EXTI_LINE_1_PA6 * @arg @ref FL_GPIO_EXTI_LINE_1_PA7 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine1(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI1_Msk, EXTIPin); } /** * @brief Get EXTI1 interrupt input * @rmtoll EXTISEL0 EXTI1 FL_GPIO_GetExtiLine1 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine1(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI1_Msk)); } /** * @brief Set EXTI2 interrupt input * @rmtoll EXTISEL0 EXTI2 FL_GPIO_SetExtiLine2 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_2_PA8 * @arg @ref FL_GPIO_EXTI_LINE_2_PA9 * @arg @ref FL_GPIO_EXTI_LINE_2_PA10 * @arg @ref FL_GPIO_EXTI_LINE_2_PA11 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine2(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI2_Msk, EXTIPin); } /** * @brief Get EXTI2 interrupt input * @rmtoll EXTISEL0 EXTI2 FL_GPIO_GetExtiLine2 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine2(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI2_Msk)); } /** * @brief Set EXTI3 interrupt input * @rmtoll EXTISEL0 EXTI3 FL_GPIO_SetExtiLine3 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_3_PA12 * @arg @ref FL_GPIO_EXTI_LINE_3_PA13 * @arg @ref FL_GPIO_EXTI_LINE_3_PA14 * @arg @ref FL_GPIO_EXTI_LINE_3_PA15 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine3(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI3_Msk, EXTIPin); } /** * @brief Get EXTI3 interrupt input * @rmtoll EXTISEL0 EXTI3 FL_GPIO_GetExtiLine3 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine3(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI3_Msk)); } /** * @brief Set EXTI4 interrupt input * @rmtoll EXTISEL0 EXTI4 FL_GPIO_SetExtiLine4 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_4_PB0 * @arg @ref FL_GPIO_EXTI_LINE_4_PB1 * @arg @ref FL_GPIO_EXTI_LINE_4_PB2 * @arg @ref FL_GPIO_EXTI_LINE_4_PB3 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine4(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI4_Msk, EXTIPin); } /** * @brief Get EXTI4 interrupt input * @rmtoll EXTISEL0 EXTI4 FL_GPIO_GetExtiLine4 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine4(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI4_Msk)); } /** * @brief Set EXTI5 interrupt input * @rmtoll EXTISEL0 EXTI5 FL_GPIO_SetExtiLine5 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_5_PB4 * @arg @ref FL_GPIO_EXTI_LINE_5_PB5 * @arg @ref FL_GPIO_EXTI_LINE_5_PB6 * @arg @ref FL_GPIO_EXTI_LINE_5_PB7 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine5(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI5_Msk, EXTIPin); } /** * @brief Get EXTI5 interrupt input * @rmtoll EXTISEL0 EXTI5 FL_GPIO_GetExtiLine5 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine5(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI5_Msk)); } /** * @brief Set EXTI6 interrupt input * @rmtoll EXTISEL0 EXTI6 FL_GPIO_SetExtiLine6 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_6_PB8 * @arg @ref FL_GPIO_EXTI_LINE_6_PB9 * @arg @ref FL_GPIO_EXTI_LINE_6_PB10 * @arg @ref FL_GPIO_EXTI_LINE_6_PB11 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine6(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI6_Msk, EXTIPin); } /** * @brief Get EXTI6 interrupt input * @rmtoll EXTISEL0 EXTI6 FL_GPIO_GetExtiLine6 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine6(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI6_Msk)); } /** * @brief Set EXTI7 interrupt input * @rmtoll EXTISEL0 EXTI7 FL_GPIO_SetExtiLine7 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_7_PB12 * @arg @ref FL_GPIO_EXTI_LINE_7_PB13 * @arg @ref FL_GPIO_EXTI_LINE_7_PB14 * @arg @ref FL_GPIO_EXTI_LINE_7_PB15 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine7(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI7_Msk, EXTIPin); } /** * @brief Get EXTI7 interrupt input * @rmtoll EXTISEL0 EXTI7 FL_GPIO_GetExtiLine7 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine7(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI7_Msk)); } /** * @brief Set EXTI8 interrupt input * @rmtoll EXTISEL0 EXTI8 FL_GPIO_SetExtiLine8 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_8_PC0 * @arg @ref FL_GPIO_EXTI_LINE_8_PC1 * @arg @ref FL_GPIO_EXTI_LINE_8_PC2 * @arg @ref FL_GPIO_EXTI_LINE_8_PC3 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine8(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI8_Msk, EXTIPin); } /** * @brief Get EXTI8 interrupt input * @rmtoll EXTISEL0 EXTI8 FL_GPIO_GetExtiLine8 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine8(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI8_Msk)); } /** * @brief Set EXTI9 interrupt input * @rmtoll EXTISEL0 EXTI9 FL_GPIO_SetExtiLine9 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_9_PC4 * @arg @ref FL_GPIO_EXTI_LINE_9_PC5 * @arg @ref FL_GPIO_EXTI_LINE_9_PC6 * @arg @ref FL_GPIO_EXTI_LINE_9_PC7 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine9(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI9_Msk, EXTIPin); } /** * @brief Get EXTI9 interrupt input * @rmtoll EXTISEL0 EXTI9 FL_GPIO_GetExtiLine9 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine9(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI9_Msk)); } /** * @brief Set EXTI10 interrupt input * @rmtoll EXTISEL0 EXTI10 FL_GPIO_SetExtiLine10 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_10_PC8 * @arg @ref FL_GPIO_EXTI_LINE_10_PC9 * @arg @ref FL_GPIO_EXTI_LINE_10_PC10 * @arg @ref FL_GPIO_EXTI_LINE_10_PC11 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine10(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI10_Msk, EXTIPin); } /** * @brief Get EXTI10 interrupt input * @rmtoll EXTISEL0 EXTI10 FL_GPIO_GetExtiLine10 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine10(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI10_Msk)); } /** * @brief Set EXTI11 interrupt input * @rmtoll EXTISEL0 EXTI11 FL_GPIO_SetExtiLine11 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_11_PC12 * @arg @ref FL_GPIO_EXTI_LINE_11_PC13 * @arg @ref FL_GPIO_EXTI_LINE_11_PC14 * @arg @ref FL_GPIO_EXTI_LINE_11_PC15 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine11(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI11_Msk, EXTIPin); } /** * @brief Get EXTI11 interrupt input * @rmtoll EXTISEL0 EXTI11 FL_GPIO_GetExtiLine11 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine11(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI11_Msk)); } /** * @brief Set EXTI12 interrupt input * @rmtoll EXTISEL0 EXTI12 FL_GPIO_SetExtiLine12 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_12_PD0 * @arg @ref FL_GPIO_EXTI_LINE_12_PD1 * @arg @ref FL_GPIO_EXTI_LINE_12_PD2 * @arg @ref FL_GPIO_EXTI_LINE_12_PD3 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine12(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI12_Msk, EXTIPin); } /** * @brief Get EXTI12 interrupt input * @rmtoll EXTISEL0 EXTI12 FL_GPIO_GetExtiLine12 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine12(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI12_Msk)); } /** * @brief Set EXTI13 interrupt input * @rmtoll EXTISEL0 EXTI13 FL_GPIO_SetExtiLine13 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_13_PD4 * @arg @ref FL_GPIO_EXTI_LINE_13_PD5 * @arg @ref FL_GPIO_EXTI_LINE_13_PD6 * @arg @ref FL_GPIO_EXTI_LINE_13_PD7 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine13(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI13_Msk, EXTIPin); } /** * @brief Get EXTI13 interrupt input * @rmtoll EXTISEL0 EXTI13 FL_GPIO_GetExtiLine13 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine13(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI13_Msk)); } /** * @brief Set EXTI14 interrupt input * @rmtoll EXTISEL0 EXTI14 FL_GPIO_SetExtiLine14 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_14_PD8 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine14(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI14_Msk, EXTIPin); } /** * @brief Get EXTI14 interrupt input * @rmtoll EXTISEL0 EXTI14 FL_GPIO_GetExtiLine14 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine14(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI14_Msk)); } /** * @brief Set EXTI15 interrupt input * @rmtoll EXTISEL0 EXTI15 FL_GPIO_SetExtiLine15 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_14_PD9 * @arg @ref FL_GPIO_EXTI_LINE_14_PD10 * @arg @ref FL_GPIO_EXTI_LINE_14_PD11 * @arg @ref FL_GPIO_EXTI_LINE_15_PD12 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine15(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI15_Msk, EXTIPin); } /** * @brief Get EXTI15 interrupt input * @rmtoll EXTISEL0 EXTI15 FL_GPIO_GetExtiLine15 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine15(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL0, GPIO_EXTISEL0_EXTI15_Msk)); } /** * @brief Set EXTI16 interrupt input * @rmtoll EXTISEL1 EXTI16 FL_GPIO_SetExtiLine16 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_16_PE0 * @arg @ref FL_GPIO_EXTI_LINE_16_PE1 * @arg @ref FL_GPIO_EXTI_LINE_16_PE2 * @arg @ref FL_GPIO_EXTI_LINE_16_PE3 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine16(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL1, GPIO_EXTISEL1_EXTI16_Msk, EXTIPin); } /** * @brief Get EXTI16 interrupt input * @rmtoll EXTISEL1 EXTI16 FL_GPIO_GetExtiLine16 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine16(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL1, GPIO_EXTISEL1_EXTI16_Msk)); } /** * @brief Set EXTI17 interrupt input * @rmtoll EXTISEL1 EXTI17 FL_GPIO_SetExtiLine17 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_17_PE5 * @arg @ref FL_GPIO_EXTI_LINE_17_PE6 * @arg @ref FL_GPIO_EXTI_LINE_17_PE7 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine17(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL1, GPIO_EXTISEL1_EXTI17_Msk, EXTIPin); } /** * @brief Get EXTI17 interrupt input * @rmtoll EXTISEL1 EXTI17 FL_GPIO_GetExtiLine17 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine17(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL1, GPIO_EXTISEL1_EXTI17_Msk)); } /** * @brief Set EXTI18 interrupt input * @rmtoll EXTISEL1 EXTI18 FL_GPIO_SetExtiLine18 * @param GPIOx GPIO Port * @param EXTIPin This parameter can be one of the following values: * @arg @ref FL_GPIO_EXTI_LINE_18_PE8 * @arg @ref FL_GPIO_EXTI_LINE_18_PE9 * @retval None */ __STATIC_INLINE void FL_GPIO_SetExtiLine18(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin) { MODIFY_REG(GPIOx->EXTISEL1, GPIO_EXTISEL1_EXTI18_Msk, EXTIPin); } /** * @brief Get EXTI18 interrupt input * @rmtoll EXTISEL1 EXTI18 FL_GPIO_GetExtiLine18 * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: */ __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine18(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->EXTISEL1, GPIO_EXTISEL1_EXTI18_Msk)); } /** * @brief Get WKUP enable status * @rmtoll PINWKEN EN FL_GPIO_IsEnabledWakeup * @param GPIOx GPIO Port * @param wakeup This parameter can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_0 * @arg @ref FL_GPIO_WAKEUP_1 * @arg @ref FL_GPIO_WAKEUP_2 * @arg @ref FL_GPIO_WAKEUP_3 * @arg @ref FL_GPIO_WAKEUP_4 * @arg @ref FL_GPIO_WAKEUP_5 * @arg @ref FL_GPIO_WAKEUP_6 * @arg @ref FL_GPIO_WAKEUP_7 * @arg @ref FL_GPIO_WAKEUP_8 * @arg @ref FL_GPIO_WAKEUP_9 * @retval State of bit (1 or 0). */ __STATIC_INLINE uint32_t FL_GPIO_IsEnabledWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup) { return (uint32_t)(READ_BIT(GPIOx->PINWKEN, ((wakeup & 0x3ff) << 0x0U)) == ((wakeup & 0x3ff) << 0x0U)); } /** * @brief WKUP enable * @rmtoll PINWKEN EN FL_GPIO_EnableWakeup * @param GPIOx GPIO Port * @param wakeup This parameter can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_0 * @arg @ref FL_GPIO_WAKEUP_1 * @arg @ref FL_GPIO_WAKEUP_2 * @arg @ref FL_GPIO_WAKEUP_3 * @arg @ref FL_GPIO_WAKEUP_4 * @arg @ref FL_GPIO_WAKEUP_5 * @arg @ref FL_GPIO_WAKEUP_6 * @arg @ref FL_GPIO_WAKEUP_7 * @arg @ref FL_GPIO_WAKEUP_8 * @arg @ref FL_GPIO_WAKEUP_9 * @retval None */ __STATIC_INLINE void FL_GPIO_EnableWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup) { SET_BIT(GPIOx->PINWKEN, ((wakeup & 0x3ff) << 0x0U)); } /** * @brief WKUP disable * @rmtoll PINWKEN EN FL_GPIO_DisableWakeup * @param GPIOx GPIO Port * @param wakeup This parameter can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_0 * @arg @ref FL_GPIO_WAKEUP_1 * @arg @ref FL_GPIO_WAKEUP_2 * @arg @ref FL_GPIO_WAKEUP_3 * @arg @ref FL_GPIO_WAKEUP_4 * @arg @ref FL_GPIO_WAKEUP_5 * @arg @ref FL_GPIO_WAKEUP_6 * @arg @ref FL_GPIO_WAKEUP_7 * @arg @ref FL_GPIO_WAKEUP_8 * @arg @ref FL_GPIO_WAKEUP_9 * @retval None */ __STATIC_INLINE void FL_GPIO_DisableWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup) { CLEAR_BIT(GPIOx->PINWKEN, ((wakeup & 0x3ff) << 0x0U)); } /** * @brief Get WKUP interrupt entry * @rmtoll PINWKEN WKISEL FL_GPIO_GetWakeupInterruptEntry * @param GPIOx GPIO Port * @retval Returned value can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_NMI * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_38 */ __STATIC_INLINE uint32_t FL_GPIO_GetWakeupInterruptEntry(GPIO_COMMON_Type *GPIOx) { return (uint32_t)(READ_BIT(GPIOx->PINWKEN, GPIO_PINWKEN_WKISEL_Msk)); } /** * @brief Set wkup interrupt entry * @rmtoll PINWKEN WKISEL FL_GPIO_SetWakeupInterruptEntry * @param GPIOx GPIO Port * @param wakeup This parameter can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_NMI * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_38 * @retval None */ __STATIC_INLINE void FL_GPIO_SetWakeupInterruptEntry(GPIO_COMMON_Type *GPIOx, uint32_t wakeup) { MODIFY_REG(GPIOx->PINWKEN, GPIO_PINWKEN_WKISEL_Msk, wakeup); } /** * @brief Set WKUP edge polarity * @rmtoll PINWKEN SEL FL_GPIO_SetWakeupEdge * @param GPIOx GPIO Port * @param wakeup This parameter can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_0 * @arg @ref FL_GPIO_WAKEUP_1 * @arg @ref FL_GPIO_WAKEUP_2 * @arg @ref FL_GPIO_WAKEUP_3 * @arg @ref FL_GPIO_WAKEUP_4 * @arg @ref FL_GPIO_WAKEUP_5 * @arg @ref FL_GPIO_WAKEUP_6 * @arg @ref FL_GPIO_WAKEUP_7 * @arg @ref FL_GPIO_WAKEUP_8 * @arg @ref FL_GPIO_WAKEUP_9 * @param mode This parameter can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_TRIGGER_RISING * @arg @ref FL_GPIO_WAKEUP_TRIGGER_FALLING * @arg @ref FL_GPIO_WAKEUP_TRIGGER_BOTH * @retval None */ __STATIC_INLINE void FL_GPIO_SetWakeupEdge(GPIO_COMMON_Type *GPIOx, uint32_t wakeup, uint32_t mode) { MODIFY_REG(GPIOx->PINWKEN, ((wakeup * wakeup) * GPIO_PINWKEN_SEL), ((wakeup * wakeup) * mode)); } /** * @brief Get WKUP edge polarity * @rmtoll PINWKEN SEL FL_GPIO_GetWakeupEdge * @param GPIOx GPIO Port * @param wakeup This parameter can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_0 * @arg @ref FL_GPIO_WAKEUP_1 * @arg @ref FL_GPIO_WAKEUP_2 * @arg @ref FL_GPIO_WAKEUP_3 * @arg @ref FL_GPIO_WAKEUP_4 * @arg @ref FL_GPIO_WAKEUP_5 * @arg @ref FL_GPIO_WAKEUP_6 * @arg @ref FL_GPIO_WAKEUP_7 * @arg @ref FL_GPIO_WAKEUP_8 * @arg @ref FL_GPIO_WAKEUP_9 * @retval Returned value can be one of the following values: * @arg @ref FL_GPIO_WAKEUP_TRIGGER_RISING * @arg @ref FL_GPIO_WAKEUP_TRIGGER_FALLING * @arg @ref FL_GPIO_WAKEUP_TRIGGER_BOTH */ __STATIC_INLINE uint32_t FL_GPIO_GetWakeupEdge(GPIO_COMMON_Type *GPIOx, uint32_t wakeup) { return (uint32_t)(READ_BIT(GPIOx->PINWKEN, ((wakeup * wakeup) * GPIO_PINWKEN_SEL)) / (wakeup * wakeup)); } /** * @} */ /** @defgroup GPIO_FL_EF_Init Initialization and de-initialization functions * @{ */ FL_ErrorStatus FL_GPIO_Init(GPIO_Type *GPIOx, FL_GPIO_InitTypeDef *initStruct); FL_ErrorStatus FL_GPIO_DeInit(GPIO_Type *GPIOx, uint32_t pin); void FL_GPIO_StructInit(FL_GPIO_InitTypeDef *initStruct); FL_ErrorStatus FL_WKUP_Init(FL_WKUP_InitTypeDef *initStruct, uint32_t wakeup); FL_ErrorStatus FL_WKUP_DeInit(uint32_t wakeup); void FL_WKUP_StructInit(FL_WKUP_InitTypeDef *initStruct); void FL_GPIO_ALLPIN_LPM_MODE(void); /** * @} */ /** * @} */ /** * @} */ #ifdef __cplusplus } #endif #endif /* __FM33LG0XX_FL_GPIO_H*/ /*************************Py_Code_Generator Version: 0.1-0.14-0.1 @ 2020-10-20*************************/ /*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/