44#ifndef G32R4xx_DDL_GPIO_H
45#define G32R4xx_DDL_GPIO_H
81#if defined(USE_FULL_DDL_DRIVER)
92#if defined(USE_FULL_DDL_DRIVER)
144#define DDL_GPIO_PIN_0 GPIO_PIN0
145#define DDL_GPIO_PIN_1 GPIO_PIN1
146#define DDL_GPIO_PIN_2 GPIO_PIN2
147#define DDL_GPIO_PIN_3 GPIO_PIN3
148#define DDL_GPIO_PIN_4 GPIO_PIN4
149#define DDL_GPIO_PIN_5 GPIO_PIN5
150#define DDL_GPIO_PIN_6 GPIO_PIN6
151#define DDL_GPIO_PIN_7 GPIO_PIN7
152#define DDL_GPIO_PIN_8 GPIO_PIN8
153#define DDL_GPIO_PIN_9 GPIO_PIN9
154#define DDL_GPIO_PIN_10 GPIO_PIN10
155#define DDL_GPIO_PIN_11 GPIO_PIN11
156#define DDL_GPIO_PIN_12 GPIO_PIN12
157#define DDL_GPIO_PIN_13 GPIO_PIN13
158#define DDL_GPIO_PIN_14 GPIO_PIN14
159#define DDL_GPIO_PIN_15 GPIO_PIN15
160#define DDL_GPIO_PIN_ALL (GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | \
161 GPIO_PIN3 | GPIO_PIN4 | GPIO_PIN5 | \
162 GPIO_PIN6 | GPIO_PIN7 | GPIO_PIN8 | \
163 GPIO_PIN9 | GPIO_PIN10 | GPIO_PIN11 | \
164 GPIO_PIN12 | GPIO_PIN13 | GPIO_PIN14 | \
173#define DDL_GPIO_MODE_ANALOG (0x00000000U)
174#define DDL_GPIO_MODE_INPUT GPIO_MODE_MODE0_0
175#define DDL_GPIO_MODE_OUTPUT GPIO_MODE_MODE0_1
176#define DDL_GPIO_MODE_ALTERNATE GPIO_MODE_MODE0
184#define DDL_GPIO_OUTPUT_PUSHPULL (0x00000000U)
185#define DDL_GPIO_OUTPUT_OPENDRAIN GPIO_OMODE_OT_0
193#define DDL_GPIO_SPEED_FREQ_LOW GPIO_OSPEEDER_OSPEEDR0_0
194#define DDL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDER_OSPEEDR0_1
195#define DDL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDER_OSPEEDR0
203#define DDL_GPIO_PULL_NO (0x00000000U)
204#define DDL_GPIO_PULL_UP GPIO_PUPD_PUPDR0_0
205#define DDL_GPIO_PULL_DOWN GPIO_PUPD_PUPDR0
213#define DDL_GPIO_AF_0 (0x0000000U)
214#define DDL_GPIO_AF_1 (0x0000001U)
215#define DDL_GPIO_AF_2 (0x0000002U)
216#define DDL_GPIO_AF_3 (0x0000003U)
224#define DDL_GPIO_SPECIAL_PIN_TYPE_DIGITAL_5V_INPUT (0x00000000U)
225#define DDL_GPIO_SPECIAL_PIN_TYPE_ANALOG_3V3_INPUT_OUTPUT (0x00000001U)
242#define DDL_GPIO_Locate32BitReg(__BASEADDR__, __GPIO__) ((__BASEADDR__) + (__GPIO__ << 2))
244#define DDL_GPIO_Locate16BitReg(__BASEADDR__, __GPIO__) \
245 ((volatile uint16_t *)(((volatile uint8_t *)(__BASEADDR__)) + (((uint32_t)(__GPIO__)) << 1)))
254#define DDL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
262#define DDL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
312 MODIFY_REG((*reg), (GPIO_MODE_MODE0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL(Pin) * 2U)));
346 return (uint32_t)(READ_BIT((*reg),
347 (GPIO_MODE_MODE0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
381 MODIFY_REG16((reg), PinMask, (PinMask * OutputType));
415 return (uint32_t)(READ_BIT16((reg), Pin) >> POSITION_VAL(Pin));
451 MODIFY_REG((*reg), (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U)),
452 (Speed << (POSITION_VAL(Pin) * 2U)));
487 return (uint32_t)(READ_BIT((*reg),
488 (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
521 MODIFY_REG((*reg), (GPIO_PUPD_PUPDR0 << (POSITION_VAL(Pin) * 2U)), (Pull << (POSITION_VAL(Pin) * 2U)));
553 return (uint32_t)(READ_BIT((*reg),
554 (GPIO_PUPD_PUPDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
589 MODIFY_REG((*reg), (GPIO_ALF_ALFSEL0 << (POSITION_VAL(Pin) * 2U)),
590 (Alternate << (POSITION_VAL(Pin) * 2U)));
621 return (uint32_t)(READ_BIT((*reg),
622 (GPIO_ALF_ALFSEL0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
716 return (uint32_t)(READ_BIT16((reg), pinMask) == pinMask);
735 return (uint32_t)(READ_REG16(reg));
764 return ((READ_BIT16((reg), PinMask) == (PinMask)) ? 1UL : 0UL);
776 WRITE_REG16((reg), PortValue);
787 return (uint32_t)(READ_REG16((reg)));
816 return ((READ_BIT16((reg), PinMask) == (PinMask)) ? 1UL : 0UL);
845 SET_BIT((*reg), (PinMask));
874 SET_BIT((*reg), (PinMask << 16));
904 odr = READ_REG16((reg));
905 MODIFY_REG16((reg), (odr & PinMask), (~odr & PinMask));
997#if defined(USE_FULL_DDL_DRIVER)
__STATIC_INLINE uint32_t DDL_GPIO_IsOutputPinSet(GPIO_Type GPIOx, uint32_t PinMask)
Return if input data level for several pins of dedicated port is high or low.
__STATIC_INLINE uint32_t DDL_GPIO_IsInputPinSet(GPIO_Type GPIOx, uint32_t PinMask)
Return if input data level for several pins of a dedicated port is high or low.
__STATIC_INLINE uint32_t DDL_GPIO_ReadInputPort(GPIO_Type GPIOx)
Return full input data register value for a dedicated port.
__STATIC_INLINE uint32_t DDL_GPIO_ReadOutputPort(GPIO_Type GPIOx)
Return full output data register value for a dedicated port.
uint32_t DDL_GPIO_GetSpecialPinType(GPIO_Type GPIOx, uint32_t PinMask)
Return special pin type configuration for the dedicated special GPIO pin.
__STATIC_INLINE void DDL_GPIO_WriteOutputPort(GPIO_Type GPIOx, uint32_t PortValue)
Write output data register for the port.
__STATIC_INLINE void DDL_GPIO_SetOutputPin(GPIO_Type GPIOx, uint32_t PinMask)
Set several pins to high level on dedicated gpio port.
void DDL_GPIO_EnableAdc3AnalogSwitchPin(GPIO_Type GPIOx, uint32_t PinMask)
Enable ADC3 analog switch bits in SWR for the given GPIO port.
void DDL_GPIO_SetSpecialPinType(GPIO_Type GPIOx, uint32_t PinMask, uint32_t PinType)
Configure special pin type for the dedicated special GPIO pin.
void DDL_GPIO_DisableAdc3AnalogSwitchPin(GPIO_Type GPIOx, uint32_t PinMask)
Disable ADC3 analog switch bits in SWR for the given GPIO port.
__STATIC_INLINE void DDL_GPIO_TogglePin(GPIO_Type GPIOx, uint32_t PinMask)
Toggle data value for several pin of dedicated port.
__STATIC_INLINE void DDL_GPIO_ResetOutputPin(GPIO_Type GPIOx, uint32_t PinMask)
Set several pins to low level on dedicated gpio port.
ErrorStatus DDL_GPIO_DeInit(GPIO_Type GPIOx)
De-initialize GPIO registers (Registers restored to their default values).
void DDL_GPIO_StructInit(DDL_GPIO_InitTypeDef *GPIO_InitStruct)
Set each DDL_GPIO_InitTypeDef field to default value.
ErrorStatus DDL_GPIO_Init(GPIO_Type GPIOx, DDL_GPIO_InitTypeDef *GPIO_InitStruct)
Initialize GPIO registers according to the specified parameters in GPIO_InitStruct.
__STATIC_INLINE void DDL_GPIO_SetPinOutputType(GPIO_Type GPIOx, uint32_t PinMask, uint32_t OutputType)
Configure gpio output type for several pins on dedicated port.
__STATIC_INLINE void DDL_GPIO_SetPinPull(GPIO_Type GPIOx, uint32_t Pin, uint32_t Pull)
Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port.
__STATIC_INLINE uint32_t DDL_GPIO_GetPinMode(GPIO_Type GPIOx, uint32_t Pin)
Return gpio mode for a dedicated pin on a dedicated port.
__STATIC_INLINE void DDL_GPIO_DisablePinFilter(GPIO_Type GPIOx, uint32_t Pin)
Disable the wave filter for a certain pin of the specified GPIO port.
__STATIC_INLINE void DDL_GPIO_EnablePinFilter(GPIO_Type GPIOx, uint32_t Pin)
Enable the wave filter for a certain pin of the specified GPIO port.
__STATIC_INLINE uint32_t DDL_GPIO_GetPinOutputType(GPIO_Type GPIOx, uint32_t Pin)
Return gpio output type for several pins on dedicated port.
__STATIC_INLINE void DDL_GPIO_SetAFPin(GPIO_Type GPIOx, uint32_t Pin, uint32_t Alternate)
Configure gpio alternate function of a dedicated pin for a dedicated port.
__STATIC_INLINE uint32_t DDL_GPIO_GetPinPull(GPIO_Type GPIOx, uint32_t Pin)
Return gpio pull-up or pull-down for a dedicated pin on a dedicated port.
__STATIC_INLINE void DDL_GPIO_SetPinMode(GPIO_Type GPIOx, uint32_t Pin, uint32_t Mode)
Configure gpio mode for a dedicated pin on a dedicated port.
__STATIC_INLINE uint32_t DDL_GPIO_GetPinSpeed(GPIO_Type GPIOx, uint32_t Pin)
Return gpio speed for a dedicated pin on dedicated port.
__STATIC_INLINE uint32_t DDL_GPIO_IsEnabledPinFilter(GPIO_Type GPIOx, uint32_t Pin)
Check whether the wave filter for a certain pin is enabled or disabled.
__STATIC_INLINE uint32_t DDL_GPIO_GetAFPin(GPIO_Type GPIOx, uint32_t Pin)
Return gpio alternate function of a dedicated pin for a dedicated port.
__STATIC_INLINE void DDL_GPIO_SetPinSpeed(GPIO_Type GPIOx, uint32_t Pin, uint32_t Speed)
Configure gpio speed for a dedicated pin on a dedicated port.
#define DDL_GPIO_Locate32BitReg(__BASEADDR__, __GPIO__)
#define DDL_GPIO_Locate16BitReg(__BASEADDR__, __GPIO__)
GPIO_Type
G32R4XX GPIO port Definition, according to the selected device configuration in the CMSIS device head...
LL GPIO Init Structure definition.