Go to the documentation of this file.
52 #ifndef __GR55XX_LL_GPIO_H__
53 #define __GR55XX_LL_GPIO_H__
62 #if defined (GPIO0) || defined (GPIO1)
119 #define LL_GPIO_PIN_0 ((uint32_t)0x0001U)
120 #define LL_GPIO_PIN_1 ((uint32_t)0x0002U)
121 #define LL_GPIO_PIN_2 ((uint32_t)0x0004U)
122 #define LL_GPIO_PIN_3 ((uint32_t)0x0008U)
123 #define LL_GPIO_PIN_4 ((uint32_t)0x0010U)
124 #define LL_GPIO_PIN_5 ((uint32_t)0x0020U)
125 #define LL_GPIO_PIN_6 ((uint32_t)0x0040U)
126 #define LL_GPIO_PIN_7 ((uint32_t)0x0080U)
127 #define LL_GPIO_PIN_8 ((uint32_t)0x0100U)
128 #define LL_GPIO_PIN_9 ((uint32_t)0x0200U)
129 #define LL_GPIO_PIN_10 ((uint32_t)0x0400U)
130 #define LL_GPIO_PIN_11 ((uint32_t)0x0800U)
131 #define LL_GPIO_PIN_12 ((uint32_t)0x1000U)
132 #define LL_GPIO_PIN_13 ((uint32_t)0x2000U)
133 #define LL_GPIO_PIN_14 ((uint32_t)0x4000U)
134 #define LL_GPIO_PIN_15 ((uint32_t)0x8000U)
135 #define LL_GPIO_PIN_ALL ((uint32_t)0xFFFFU)
141 #define LL_GPIO_MODE_INPUT ((uint32_t)0x0U)
142 #define LL_GPIO_MODE_OUTPUT ((uint32_t)0x1U)
143 #define LL_GPIO_MODE_MUX ((uint32_t)0x2U)
149 #define LL_GPIO_PULL_NO LL_GPIO_RE_N
150 #define LL_GPIO_PULL_UP LL_GPIO_RTYP
151 #define LL_GPIO_PULL_DOWN ((uint32_t)0x0U)
157 #define LL_GPIO_MUX_0 ((uint32_t)0x0U)
158 #define LL_GPIO_MUX_1 ((uint32_t)0x1U)
159 #define LL_GPIO_MUX_2 ((uint32_t)0x2U)
160 #define LL_GPIO_MUX_3 ((uint32_t)0x3U)
161 #define LL_GPIO_MUX_4 ((uint32_t)0x4U)
162 #define LL_GPIO_MUX_5 ((uint32_t)0x5U)
163 #define LL_GPIO_MUX_6 ((uint32_t)0x6U)
164 #define LL_GPIO_MUX_7 ((uint32_t)0x7U)
165 #define LL_GPIO_MUX_8 ((uint32_t)0x8U)
171 #define LL_GPIO_TRIGGER_NONE ((uint32_t)0x00U)
172 #define LL_GPIO_TRIGGER_RISING ((uint32_t)0x01U)
173 #define LL_GPIO_TRIGGER_FALLING ((uint32_t)0x02U)
174 #define LL_GPIO_TRIGGER_HIGH ((uint32_t)0x03U)
175 #define LL_GPIO_TRIGGER_LOW ((uint32_t)0x04U)
185 #define LL_GPIO_DEFAULT_CONFIG \
187 .pin = LL_GPIO_PIN_ALL, \
188 .mode = LL_GPIO_MODE_INPUT, \
189 .pull = LL_GPIO_PULL_DOWN, \
190 .mux = LL_GPIO_MUX_7, \
191 .trigger = LL_GPIO_TRIGGER_NONE, \
213 #define LL_GPIO_WriteReg(__instance__, __REG__, __VALUE__) WRITE_REG(__instance__->__REG__, (__VALUE__))
221 #define LL_GPIO_ReadReg(__instance__, __REG__) READ_REG(__instance__->__REG__)
241 #define LL_GPIO_GET_RESISTOR_POS(__GPIOx__) (((__GPIOx__) == GPIO0) ? 0 : 16)
249 #define LL_GPIO_GET_REG_MUX_CTRL_0_7( __GPIOx__) \
250 (((__GPIOx__) == GPIO0) ? &(MCU_SUB->DPAD_MUX_CTL0_7) : &(MCU_SUB->DPAD_MUX_CTL16_23))
258 #define LL_GPIO_GET_REG_MUX_CTRL_8_15( __GPIOx__) \
259 (((__GPIOx__) == GPIO0) ? &(MCU_SUB->DPAD_MUX_CTL8_15) : &(MCU_SUB->DPAD_MUX_CTL24_31))
264 #define LL_GPIO_RE_N_Pos 0
265 #define LL_GPIO_RE_N_Msk (0x1U << LL_GPIO_RE_N_Pos)
266 #define LL_GPIO_RE_N LL_GPIO_RE_N_Msk
272 #define LL_GPIO_RTYP_Pos 1
273 #define LL_GPIO_RTYP_Msk (0x1U << LL_GPIO_RTYP_Pos)
274 #define LL_GPIO_RTYP LL_GPIO_RTYP_Msk
326 WRITE_REG(GPIOx->OUTENSET, pin_mask);
330 WRITE_REG(GPIOx->OUTENCLR, pin_mask);
367 return (uint32_t)(READ_BITS(GPIOx->OUTENSET, pin) != RESET);
406 MODIFY_REG(MCU_SUB->DPAD_RTYP_BUS, pin_mask, (pull ==
LL_GPIO_PULL_UP) ? pin_mask : 0x0000U);
407 MODIFY_REG(MCU_SUB->DPAD_RE_N_BUS, pin_mask, (pull ==
LL_GPIO_PULL_NO) ? pin_mask : 0x0000U);
446 return ((READ_BITS(MCU_SUB->DPAD_RE_N_BUS, pin) != RESET) ?
LL_GPIO_PULL_NO :
485 uint32_t pos = POSITION_VAL(pin) << 2;
486 MODIFY_REG(*pReg, 0xF << pos, mux << pos);
521 uint32_t pos = POSITION_VAL(pin) << 2;
522 return (READ_BITS(*pReg, 0xF << pos) >> pos);
560 uint32_t pos = POSITION_VAL(pin >> 8) << 2;
561 MODIFY_REG(*pReg, 0xF << pos, mux << pos);
597 uint32_t pos = POSITION_VAL(pin >> 8) << 2;
598 return (READ_BITS(*pReg, 0xF << pos) >> pos);
619 return (uint32_t)(READ_REG(GPIOx->DATA));
652 return (READ_BITS(GPIOx->DATA, pin_mask) == (pin_mask));
668 WRITE_REG(GPIOx->DATAOUT, port_value);
683 return (uint32_t)(READ_REG(GPIOx->DATAOUT));
716 return (READ_BITS(GPIOx->DATAOUT, pin_mask) == (pin_mask));
749 #ifdef USE_GPIO_MASK_REGISTER
750 WRITE_REG(GPIOx->MASKLOWBYTE[(uint8_t)pin_mask], pin_mask & GPIO_MASKLOWBYTE_DATA);
751 WRITE_REG(GPIOx->MASKHIGHBYTE[(uint8_t)(pin_mask >> GPIO_MASKHIGHBYTE_DATA_Pos)],
752 pin_mask & GPIO_MASKHIGHBYTE_DATA);
754 SET_BITS(GPIOx->DATAOUT, pin_mask);
788 #ifdef USE_GPIO_MASK_REGISTER
789 WRITE_REG(GPIOx->MASKLOWBYTE[(uint8_t)pin_mask], 0x0000U);
790 WRITE_REG(GPIOx->MASKHIGHBYTE[(uint8_t)(pin_mask >> 8)], 0x0000U);
792 CLEAR_BITS(GPIOx->DATAOUT, pin_mask);
826 WRITE_REG(GPIOx->DATAOUT, READ_REG(GPIOx->DATAOUT) ^ pin_mask);
867 WRITE_REG(GPIOx->INTPOLCLR, pin_mask);
868 WRITE_REG(GPIOx->INTTYPESET, pin_mask);
903 return ((READ_BITS(GPIOx->INTPOLCLR, pin_mask) == (pin_mask)) &&
904 (READ_BITS(GPIOx->INTTYPESET, pin_mask) == (pin_mask)));
939 WRITE_REG(GPIOx->INTPOLSET, pin_mask);
940 WRITE_REG(GPIOx->INTTYPESET, pin_mask);
976 return ((READ_BITS(GPIOx->INTPOLSET, pin_mask) == (pin_mask)) &&
977 (READ_BITS(GPIOx->INTTYPESET, pin_mask) == (pin_mask)));
1012 WRITE_REG(GPIOx->INTPOLSET, pin_mask);
1013 WRITE_REG(GPIOx->INTTYPECLR, pin_mask);
1048 return ((READ_BITS(GPIOx->INTPOLSET, pin_mask) == (pin_mask)) &&
1049 (READ_BITS(GPIOx->INTTYPECLR, pin_mask) == (pin_mask)));
1084 WRITE_REG(GPIOx->INTPOLCLR, pin_mask);
1085 WRITE_REG(GPIOx->INTTYPECLR, pin_mask);
1120 return ((READ_BITS(GPIOx->INTPOLCLR, pin_mask) == (pin_mask)) &&
1121 (READ_BITS(GPIOx->INTTYPECLR, pin_mask) == (pin_mask)));
1155 WRITE_REG(GPIOx->INTENSET, pin_mask);
1189 WRITE_REG(GPIOx->INTENCLR, pin_mask);
1222 return (READ_BITS(GPIOx->INTENSET, pin_mask) == (pin_mask));
1263 return (uint32_t)(READ_BITS(GPIOx->INTSTAT, pin_mask));
1298 return (READ_BITS(GPIOx->INTSTAT, pin_mask) == pin_mask);
1333 WRITE_REG(GPIOx->INTSTAT, pin_mask);
__STATIC_INLINE uint32_t ll_gpio_read_input_port(gpio_regs_t *GPIOx)
Return full input data register value for a dedicated port.
Definition: gr55xx_ll_gpio.h:617
uint32_t pin
Definition: gr55xx_ll_gpio.h:78
__STATIC_INLINE uint32_t ll_gpio_get_mux_pin_0_7(gpio_regs_t *GPIOx, uint32_t pin)
Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port.
Definition: gr55xx_ll_gpio.h:518
__STATIC_INLINE uint32_t ll_gpio_is_enabled_low_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Check if low level trigger is enabled for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1118
#define LL_GPIO_GET_RESISTOR_POS(__GPIOx__)
Get the starting position of the specified GPIO instance in related pull-up/pull-down register.
Definition: gr55xx_ll_gpio.h:241
#define LL_GPIO_PULL_NO
Definition: gr55xx_ll_gpio.h:149
__STATIC_INLINE uint32_t ll_gpio_is_output_pin_set(gpio_regs_t *GPIOx, uint32_t pin_mask)
Return if input data level for several pins of dedicated port is high or low.
Definition: gr55xx_ll_gpio.h:714
__STATIC_INLINE void ll_gpio_enable_high_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Enable GPIO High Level Trigger for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1010
__STATIC_INLINE uint32_t ll_gpio_is_enabled_it(gpio_regs_t *GPIOx, uint32_t pin_mask)
Check if the Interrupt of specified GPIO pins is enabled or disabled.
Definition: gr55xx_ll_gpio.h:1220
LL GPIO init configuration definition.
Definition: gr55xx_ll_gpio.h:77
struct _ll_gpio_init ll_gpio_init_t
LL GPIO init configuration definition.
__STATIC_INLINE uint32_t ll_gpio_is_enabled_rising_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Check if rising edge trigger is enabled for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:974
__STATIC_INLINE void ll_gpio_set_mux_pin_8_15(gpio_regs_t *GPIOx, uint32_t pin, uint32_t mux)
Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
Definition: gr55xx_ll_gpio.h:557
#define LL_GPIO_PULL_UP
Definition: gr55xx_ll_gpio.h:150
uint32_t mux
Definition: gr55xx_ll_gpio.h:91
uint32_t trigger
Definition: gr55xx_ll_gpio.h:97
__STATIC_INLINE uint32_t ll_gpio_read_output_port(gpio_regs_t *GPIOx)
Return full output data register value for a dedicated port.
Definition: gr55xx_ll_gpio.h:681
__STATIC_INLINE void ll_gpio_set_output_pin(gpio_regs_t *GPIOx, uint32_t pin_mask)
Set several pins to high level on dedicated gpio port.
Definition: gr55xx_ll_gpio.h:747
__STATIC_INLINE void ll_gpio_enable_rising_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Enable GPIO Rising Edge Trigger for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:937
__STATIC_INLINE uint32_t ll_gpio_is_active_flag_it(gpio_regs_t *GPIOx, uint32_t pin_mask)
Indicates if the GPIO Interrupt Flag is set or not for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1296
__STATIC_INLINE void ll_gpio_enable_it(gpio_regs_t *GPIOx, uint32_t pin_mask)
Enable GPIO interrupts for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1153
__STATIC_INLINE uint32_t ll_gpio_get_pin_mode(gpio_regs_t *GPIOx, uint32_t pin)
Return gpio mode for a dedicated pin on dedicated port.
Definition: gr55xx_ll_gpio.h:365
__STATIC_INLINE uint32_t ll_gpio_get_pin_pull(gpio_regs_t *GPIOx, uint32_t pin)
Return gpio pull-up or pull-down for a dedicated pin on a dedicated port.
Definition: gr55xx_ll_gpio.h:442
#define LL_GPIO_GET_REG_MUX_CTRL_0_7(__GPIOx__)
Get mux control register address of specified GPIO instance.
Definition: gr55xx_ll_gpio.h:249
__STATIC_INLINE void ll_gpio_reset_output_pin(gpio_regs_t *GPIOx, uint32_t pin_mask)
Set several pins to low level on dedicated gpio port.
Definition: gr55xx_ll_gpio.h:786
error_status_t ll_gpio_deinit(gpio_regs_t *GPIOx)
De-initialize GPIO registers (Registers restored to their default values).
#define LL_GPIO_PULL_DOWN
Definition: gr55xx_ll_gpio.h:151
__STATIC_INLINE void ll_gpio_toggle_pin(gpio_regs_t *GPIOx, uint32_t pin_mask)
Toggle data value for several pin of dedicated port.
Definition: gr55xx_ll_gpio.h:824
__STATIC_INLINE void ll_gpio_write_output_port(gpio_regs_t *GPIOx, uint32_t port_value)
Write output data register for the port.
Definition: gr55xx_ll_gpio.h:666
error_status_t ll_gpio_init(gpio_regs_t *GPIOx, ll_gpio_init_t *p_gpio_init)
Initialize GPIO registers according to the specified parameters in p_gpio_init.
#define LL_GPIO_MODE_INPUT
Definition: gr55xx_ll_gpio.h:141
__STATIC_INLINE void ll_gpio_enable_low_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Enable GPIO Low Level Trigger for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1082
uint32_t mode
Definition: gr55xx_ll_gpio.h:81
__STATIC_INLINE void ll_gpio_set_mux_pin_0_7(gpio_regs_t *GPIOx, uint32_t pin, uint32_t mux)
Configure gpio pinmux number of a dedicated pin from 0 to 7 for a dedicated port.
Definition: gr55xx_ll_gpio.h:482
#define LL_GPIO_MODE_OUTPUT
Definition: gr55xx_ll_gpio.h:142
__STATIC_INLINE void ll_gpio_set_pin_mode(gpio_regs_t *GPIOx, uint32_t pin_mask, uint32_t mode)
Set several pins to input/output mode on dedicated port.
Definition: gr55xx_ll_gpio.h:322
__STATIC_INLINE uint32_t ll_gpio_get_mux_pin_8_15(gpio_regs_t *GPIOx, uint32_t pin)
Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
Definition: gr55xx_ll_gpio.h:594
__STATIC_INLINE uint32_t ll_gpio_is_input_pin_set(gpio_regs_t *GPIOx, uint32_t pin_mask)
Return if input data level for several pins of dedicated port is high or low.
Definition: gr55xx_ll_gpio.h:650
void ll_gpio_struct_init(ll_gpio_init_t *p_gpio_init)
Set each field of a ll_gpio_init_t type structure to default value.
uint32_t pull
Definition: gr55xx_ll_gpio.h:86
__STATIC_INLINE uint32_t ll_gpio_read_flag_it(gpio_regs_t *GPIOx, uint32_t pin_mask)
Read GPIO Interrupt Combination Flag for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1261
__STATIC_INLINE void ll_gpio_enable_falling_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Enable GPIO Falling Edge Trigger for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:865
__STATIC_INLINE uint32_t ll_gpio_is_enabled_high_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Check if high level trigger is enabled for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1046
#define LL_GPIO_GET_REG_MUX_CTRL_8_15(__GPIOx__)
Get mux control register address of specified GPIO instance.
Definition: gr55xx_ll_gpio.h:258
__STATIC_INLINE uint32_t ll_gpio_is_enabled_falling_trigger(gpio_regs_t *GPIOx, uint32_t pin_mask)
Check if falling edge trigger is enabled for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:901
__STATIC_INLINE void ll_gpio_disable_it(gpio_regs_t *GPIOx, uint32_t pin_mask)
Disable GPIO interrupts for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1187
__STATIC_INLINE void ll_gpio_set_pin_pull(gpio_regs_t *GPIOx, uint32_t pin_mask, uint32_t pull)
Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port.
Definition: gr55xx_ll_gpio.h:402
__STATIC_INLINE void ll_gpio_clear_flag_it(gpio_regs_t *GPIOx, uint32_t pin_mask)
Clear Interrupt Status flag for pins in the range of 0 to 15.
Definition: gr55xx_ll_gpio.h:1331