How Does STM32CubeIDE /*Configure GPIO pin : Pd3 */ GPIO_InitStruct.Pin = GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOd, &GPIO_InitStruct); Now what is GPIOD and GPIO_InitStruct GPIOD the definition is deep inside CMSIS "Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f411xe.h" #define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) and GPIOD_BASE declared in same file #define GPIOD_BASE (AHB1PERIPH_BASE + 0x0C00UL) Now GPIO_InitStruct is comes from the line GPIO_InitTypeDef GPIO_InitStruct = {0}; so the structure GPIO_InitTypeDef is as follows as defined in typedef struct { uint32_t Pin; /*!< Specifies the GPIO pins to be configured. This parameter can be any value of @ref GPIO_p...