59#ifdef USE_FULL_LL_DRIVER
60 if (
static_cast<uint8_t
>(config.
direction) <=
63 LL_GPIO_InitTypeDef ll = {};
65 ll.Speed = LL_GPIO_SPEED_FREQ_HIGH;
71 ll.Pull = LL_GPIO_PULL_NO;
74 ll.Pull = LL_GPIO_PULL_UP;
77 ll.Pull = LL_GPIO_PULL_DOWN;
80 ll.Pull = LL_GPIO_PULL_NO;
88 ll.Mode = LL_GPIO_MODE_INPUT;
92 ll.Mode = LL_GPIO_MODE_OUTPUT;
93 ll.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
97 ll.Mode = LL_GPIO_MODE_OUTPUT;
98 ll.OutputType = LL_GPIO_OUTPUT_OPENDRAIN;
102 return ErrorCode::ARG_ERR;
105 LL_GPIO_Init(port_, &ll);
107 return ErrorCode::OK;
111 GPIO_InitTypeDef gpio_init = {};
113 gpio_init.Pin = pin_;
118 gpio_init.Mode = GPIO_MODE_INPUT;
121 gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
124 gpio_init.Mode = GPIO_MODE_OUTPUT_OD;
127 gpio_init.Mode = GPIO_MODE_IT_FALLING;
130 gpio_init.Mode = GPIO_MODE_IT_RISING;
133 gpio_init.Mode = GPIO_MODE_IT_RISING_FALLING;
140 gpio_init.Pull = GPIO_NOPULL;
143 gpio_init.Pull = GPIO_PULLUP;
146 gpio_init.Pull = GPIO_PULLDOWN;
150 gpio_init.Speed = GPIO_SPEED_FREQ_HIGH;
152 HAL_GPIO_Init(port_, &gpio_init);
154 return ErrorCode::OK;