Ben Katz / mbed-dev_spine

Dependents:   SPIne CH_Communicatuin_Test CH_Communicatuin_Test2 MCP_SPIne ... more

Fork of mbed-dev-f303 by Ben Katz

Committer:
benkatz
Date:
Wed May 02 18:08:16 2018 +0000
Revision:
179:97f825502e2a
Parent:
157:ff67d9f36b67

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 157:ff67d9f36b67 1 /**
<> 157:ff67d9f36b67 2 ******************************************************************************
<> 157:ff67d9f36b67 3 * @file stm32f3xx_ll_gpio.c
<> 157:ff67d9f36b67 4 * @author MCD Application Team
<> 157:ff67d9f36b67 5 * @version V1.4.0
<> 157:ff67d9f36b67 6 * @date 16-December-2016
<> 157:ff67d9f36b67 7 * @brief GPIO LL module driver.
<> 157:ff67d9f36b67 8 ******************************************************************************
<> 157:ff67d9f36b67 9 * @attention
<> 157:ff67d9f36b67 10 *
<> 157:ff67d9f36b67 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
<> 157:ff67d9f36b67 12 *
<> 157:ff67d9f36b67 13 * Redistribution and use in source and binary forms, with or without modification,
<> 157:ff67d9f36b67 14 * are permitted provided that the following conditions are met:
<> 157:ff67d9f36b67 15 * 1. Redistributions of source code must retain the above copyright notice,
<> 157:ff67d9f36b67 16 * this list of conditions and the following disclaimer.
<> 157:ff67d9f36b67 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
<> 157:ff67d9f36b67 18 * this list of conditions and the following disclaimer in the documentation
<> 157:ff67d9f36b67 19 * and/or other materials provided with the distribution.
<> 157:ff67d9f36b67 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
<> 157:ff67d9f36b67 21 * may be used to endorse or promote products derived from this software
<> 157:ff67d9f36b67 22 * without specific prior written permission.
<> 157:ff67d9f36b67 23 *
<> 157:ff67d9f36b67 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
<> 157:ff67d9f36b67 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
<> 157:ff67d9f36b67 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 157:ff67d9f36b67 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
<> 157:ff67d9f36b67 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
<> 157:ff67d9f36b67 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
<> 157:ff67d9f36b67 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
<> 157:ff67d9f36b67 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
<> 157:ff67d9f36b67 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
<> 157:ff67d9f36b67 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 157:ff67d9f36b67 34 *
<> 157:ff67d9f36b67 35 ******************************************************************************
<> 157:ff67d9f36b67 36 */
<> 157:ff67d9f36b67 37 #if defined(USE_FULL_LL_DRIVER)
<> 157:ff67d9f36b67 38
<> 157:ff67d9f36b67 39 /* Includes ------------------------------------------------------------------*/
<> 157:ff67d9f36b67 40 #include "stm32f3xx_ll_gpio.h"
<> 157:ff67d9f36b67 41 #include "stm32f3xx_ll_bus.h"
<> 157:ff67d9f36b67 42 #ifdef USE_FULL_ASSERT
<> 157:ff67d9f36b67 43 #include "stm32_assert.h"
<> 157:ff67d9f36b67 44 #else
<> 157:ff67d9f36b67 45 #define assert_param(expr) ((void)0U)
<> 157:ff67d9f36b67 46 #endif
<> 157:ff67d9f36b67 47
<> 157:ff67d9f36b67 48 /** @addtogroup STM32F3xx_LL_Driver
<> 157:ff67d9f36b67 49 * @{
<> 157:ff67d9f36b67 50 */
<> 157:ff67d9f36b67 51
<> 157:ff67d9f36b67 52 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH)
<> 157:ff67d9f36b67 53
<> 157:ff67d9f36b67 54 /** @addtogroup GPIO_LL
<> 157:ff67d9f36b67 55 * @{
<> 157:ff67d9f36b67 56 */
<> 157:ff67d9f36b67 57
<> 157:ff67d9f36b67 58 /* Private types -------------------------------------------------------------*/
<> 157:ff67d9f36b67 59 /* Private variables ---------------------------------------------------------*/
<> 157:ff67d9f36b67 60 /* Private constants ---------------------------------------------------------*/
<> 157:ff67d9f36b67 61 /* Private macros ------------------------------------------------------------*/
<> 157:ff67d9f36b67 62 /** @addtogroup GPIO_LL_Private_Macros
<> 157:ff67d9f36b67 63 * @{
<> 157:ff67d9f36b67 64 */
<> 157:ff67d9f36b67 65 #define IS_LL_GPIO_PIN(__VALUE__) ((((uint32_t)0x00000000U) < (__VALUE__)) && ((__VALUE__) <= (LL_GPIO_PIN_ALL)))
<> 157:ff67d9f36b67 66
<> 157:ff67d9f36b67 67 #define IS_LL_GPIO_MODE(__VALUE__) (((__VALUE__) == LL_GPIO_MODE_INPUT) ||\
<> 157:ff67d9f36b67 68 ((__VALUE__) == LL_GPIO_MODE_OUTPUT) ||\
<> 157:ff67d9f36b67 69 ((__VALUE__) == LL_GPIO_MODE_ALTERNATE) ||\
<> 157:ff67d9f36b67 70 ((__VALUE__) == LL_GPIO_MODE_ANALOG))
<> 157:ff67d9f36b67 71
<> 157:ff67d9f36b67 72 #define IS_LL_GPIO_OUTPUT_TYPE(__VALUE__) (((__VALUE__) == LL_GPIO_OUTPUT_PUSHPULL) ||\
<> 157:ff67d9f36b67 73 ((__VALUE__) == LL_GPIO_OUTPUT_OPENDRAIN))
<> 157:ff67d9f36b67 74
<> 157:ff67d9f36b67 75 #define IS_LL_GPIO_SPEED(__VALUE__) (((__VALUE__) == LL_GPIO_SPEED_FREQ_LOW) ||\
<> 157:ff67d9f36b67 76 ((__VALUE__) == LL_GPIO_SPEED_FREQ_MEDIUM) ||\
<> 157:ff67d9f36b67 77 ((__VALUE__) == LL_GPIO_SPEED_FREQ_HIGH))
<> 157:ff67d9f36b67 78
<> 157:ff67d9f36b67 79 #define IS_LL_GPIO_PULL(__VALUE__) (((__VALUE__) == LL_GPIO_PULL_NO) ||\
<> 157:ff67d9f36b67 80 ((__VALUE__) == LL_GPIO_PULL_UP) ||\
<> 157:ff67d9f36b67 81 ((__VALUE__) == LL_GPIO_PULL_DOWN))
<> 157:ff67d9f36b67 82
<> 157:ff67d9f36b67 83 #define IS_LL_GPIO_ALTERNATE(__VALUE__) (((__VALUE__) == LL_GPIO_AF_0 ) ||\
<> 157:ff67d9f36b67 84 ((__VALUE__) == LL_GPIO_AF_1 ) ||\
<> 157:ff67d9f36b67 85 ((__VALUE__) == LL_GPIO_AF_2 ) ||\
<> 157:ff67d9f36b67 86 ((__VALUE__) == LL_GPIO_AF_3 ) ||\
<> 157:ff67d9f36b67 87 ((__VALUE__) == LL_GPIO_AF_4 ) ||\
<> 157:ff67d9f36b67 88 ((__VALUE__) == LL_GPIO_AF_5 ) ||\
<> 157:ff67d9f36b67 89 ((__VALUE__) == LL_GPIO_AF_6 ) ||\
<> 157:ff67d9f36b67 90 ((__VALUE__) == LL_GPIO_AF_7 ) ||\
<> 157:ff67d9f36b67 91 ((__VALUE__) == LL_GPIO_AF_8 ) ||\
<> 157:ff67d9f36b67 92 ((__VALUE__) == LL_GPIO_AF_9 ) ||\
<> 157:ff67d9f36b67 93 ((__VALUE__) == LL_GPIO_AF_10 ) ||\
<> 157:ff67d9f36b67 94 ((__VALUE__) == LL_GPIO_AF_11 ) ||\
<> 157:ff67d9f36b67 95 ((__VALUE__) == LL_GPIO_AF_12 ) ||\
<> 157:ff67d9f36b67 96 ((__VALUE__) == LL_GPIO_AF_13 ) ||\
<> 157:ff67d9f36b67 97 ((__VALUE__) == LL_GPIO_AF_14 ) ||\
<> 157:ff67d9f36b67 98 ((__VALUE__) == LL_GPIO_AF_15 ))
<> 157:ff67d9f36b67 99 /**
<> 157:ff67d9f36b67 100 * @}
<> 157:ff67d9f36b67 101 */
<> 157:ff67d9f36b67 102
<> 157:ff67d9f36b67 103 /* Private function prototypes -----------------------------------------------*/
<> 157:ff67d9f36b67 104
<> 157:ff67d9f36b67 105 /* Exported functions --------------------------------------------------------*/
<> 157:ff67d9f36b67 106 /** @addtogroup GPIO_LL_Exported_Functions
<> 157:ff67d9f36b67 107 * @{
<> 157:ff67d9f36b67 108 */
<> 157:ff67d9f36b67 109
<> 157:ff67d9f36b67 110 /** @addtogroup GPIO_LL_EF_Init
<> 157:ff67d9f36b67 111 * @{
<> 157:ff67d9f36b67 112 */
<> 157:ff67d9f36b67 113
<> 157:ff67d9f36b67 114 /**
<> 157:ff67d9f36b67 115 * @brief De-initialize GPIO registers (Registers restored to their default values).
<> 157:ff67d9f36b67 116 * @param GPIOx GPIO Port
<> 157:ff67d9f36b67 117 * @retval An ErrorStatus enumeration value:
<> 157:ff67d9f36b67 118 * - SUCCESS: GPIO registers are de-initialized
<> 157:ff67d9f36b67 119 * - ERROR: Wrong GPIO Port
<> 157:ff67d9f36b67 120 */
<> 157:ff67d9f36b67 121 ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx)
<> 157:ff67d9f36b67 122 {
<> 157:ff67d9f36b67 123 ErrorStatus status = SUCCESS;
<> 157:ff67d9f36b67 124
<> 157:ff67d9f36b67 125 /* Check the parameters */
<> 157:ff67d9f36b67 126 assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
<> 157:ff67d9f36b67 127
<> 157:ff67d9f36b67 128 /* Force and Release reset on clock of GPIOx Port */
<> 157:ff67d9f36b67 129 if (GPIOx == GPIOA)
<> 157:ff67d9f36b67 130 {
<> 157:ff67d9f36b67 131 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOA);
<> 157:ff67d9f36b67 132 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOA);
<> 157:ff67d9f36b67 133 }
<> 157:ff67d9f36b67 134 else if (GPIOx == GPIOB)
<> 157:ff67d9f36b67 135 {
<> 157:ff67d9f36b67 136 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOB);
<> 157:ff67d9f36b67 137 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOB);
<> 157:ff67d9f36b67 138 }
<> 157:ff67d9f36b67 139 else if (GPIOx == GPIOC)
<> 157:ff67d9f36b67 140 {
<> 157:ff67d9f36b67 141 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOC);
<> 157:ff67d9f36b67 142 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOC);
<> 157:ff67d9f36b67 143 }
<> 157:ff67d9f36b67 144 #if defined(GPIOD)
<> 157:ff67d9f36b67 145 else if (GPIOx == GPIOD)
<> 157:ff67d9f36b67 146 {
<> 157:ff67d9f36b67 147 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOD);
<> 157:ff67d9f36b67 148 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOD);
<> 157:ff67d9f36b67 149 }
<> 157:ff67d9f36b67 150 #endif /* GPIOD */
<> 157:ff67d9f36b67 151 #if defined(GPIOE)
<> 157:ff67d9f36b67 152 else if (GPIOx == GPIOE)
<> 157:ff67d9f36b67 153 {
<> 157:ff67d9f36b67 154 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOE);
<> 157:ff67d9f36b67 155 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOE);
<> 157:ff67d9f36b67 156 }
<> 157:ff67d9f36b67 157 #endif /* GPIOE */
<> 157:ff67d9f36b67 158 #if defined(GPIOF)
<> 157:ff67d9f36b67 159 else if (GPIOx == GPIOF)
<> 157:ff67d9f36b67 160 {
<> 157:ff67d9f36b67 161 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOF);
<> 157:ff67d9f36b67 162 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOF);
<> 157:ff67d9f36b67 163 }
<> 157:ff67d9f36b67 164 #endif /* GPIOF */
<> 157:ff67d9f36b67 165 #if defined(GPIOG)
<> 157:ff67d9f36b67 166 else if (GPIOx == GPIOG)
<> 157:ff67d9f36b67 167 {
<> 157:ff67d9f36b67 168 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOG);
<> 157:ff67d9f36b67 169 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOG);
<> 157:ff67d9f36b67 170 }
<> 157:ff67d9f36b67 171 #endif /* GPIOG */
<> 157:ff67d9f36b67 172 #if defined(GPIOH)
<> 157:ff67d9f36b67 173 else if (GPIOx == GPIOH)
<> 157:ff67d9f36b67 174 {
<> 157:ff67d9f36b67 175 LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOH);
<> 157:ff67d9f36b67 176 LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOH);
<> 157:ff67d9f36b67 177 }
<> 157:ff67d9f36b67 178 #endif /* GPIOH */
<> 157:ff67d9f36b67 179 else
<> 157:ff67d9f36b67 180 {
<> 157:ff67d9f36b67 181 status = ERROR;
<> 157:ff67d9f36b67 182 }
<> 157:ff67d9f36b67 183
<> 157:ff67d9f36b67 184 return (status);
<> 157:ff67d9f36b67 185 }
<> 157:ff67d9f36b67 186
<> 157:ff67d9f36b67 187 /**
<> 157:ff67d9f36b67 188 * @brief Initialize GPIO registers according to the specified parameters in GPIO_InitStruct.
<> 157:ff67d9f36b67 189 * @param GPIOx GPIO Port
<> 157:ff67d9f36b67 190 * @param GPIO_InitStruct: pointer to a @ref LL_GPIO_InitTypeDef structure
<> 157:ff67d9f36b67 191 * that contains the configuration information for the specified GPIO peripheral.
<> 157:ff67d9f36b67 192 * @retval An ErrorStatus enumeration value:
<> 157:ff67d9f36b67 193 * - SUCCESS: GPIO registers are initialized according to GPIO_InitStruct content
<> 157:ff67d9f36b67 194 * - ERROR: Not applicable
<> 157:ff67d9f36b67 195 */
<> 157:ff67d9f36b67 196 ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct)
<> 157:ff67d9f36b67 197 {
<> 157:ff67d9f36b67 198 uint32_t pinpos = 0x00000000U;
<> 157:ff67d9f36b67 199 uint32_t currentpin = 0x00000000U;
<> 157:ff67d9f36b67 200
<> 157:ff67d9f36b67 201 /* Check the parameters */
<> 157:ff67d9f36b67 202 assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
<> 157:ff67d9f36b67 203 assert_param(IS_LL_GPIO_PIN(GPIO_InitStruct->Pin));
<> 157:ff67d9f36b67 204 assert_param(IS_LL_GPIO_MODE(GPIO_InitStruct->Mode));
<> 157:ff67d9f36b67 205 assert_param(IS_LL_GPIO_PULL(GPIO_InitStruct->Pull));
<> 157:ff67d9f36b67 206
<> 157:ff67d9f36b67 207 /* ------------------------- Configure the port pins ---------------- */
<> 157:ff67d9f36b67 208 /* Initialize pinpos on first pin set */
<> 157:ff67d9f36b67 209 pinpos = POSITION_VAL(GPIO_InitStruct->Pin);
<> 157:ff67d9f36b67 210
<> 157:ff67d9f36b67 211 /* Configure the port pins */
<> 157:ff67d9f36b67 212 while (((GPIO_InitStruct->Pin) >> pinpos) != 0x00000000U)
<> 157:ff67d9f36b67 213 {
<> 157:ff67d9f36b67 214 /* Get current io position */
<> 157:ff67d9f36b67 215 currentpin = (GPIO_InitStruct->Pin) & (0x00000001U << pinpos);
<> 157:ff67d9f36b67 216
<> 157:ff67d9f36b67 217 if (currentpin)
<> 157:ff67d9f36b67 218 {
<> 157:ff67d9f36b67 219 /* Pin Mode configuration */
<> 157:ff67d9f36b67 220 LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode);
<> 157:ff67d9f36b67 221
<> 157:ff67d9f36b67 222 if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
<> 157:ff67d9f36b67 223 {
<> 157:ff67d9f36b67 224 /* Check Speed mode parameters */
<> 157:ff67d9f36b67 225 assert_param(IS_LL_GPIO_SPEED(GPIO_InitStruct->Speed));
<> 157:ff67d9f36b67 226
<> 157:ff67d9f36b67 227 /* Speed mode configuration */
<> 157:ff67d9f36b67 228 LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed);
<> 157:ff67d9f36b67 229 }
<> 157:ff67d9f36b67 230
<> 157:ff67d9f36b67 231 /* Pull-up Pull down resistor configuration*/
<> 157:ff67d9f36b67 232 LL_GPIO_SetPinPull(GPIOx, currentpin, GPIO_InitStruct->Pull);
<> 157:ff67d9f36b67 233
<> 157:ff67d9f36b67 234 if (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE)
<> 157:ff67d9f36b67 235 {
<> 157:ff67d9f36b67 236 /* Check Alternate parameter */
<> 157:ff67d9f36b67 237 assert_param(IS_LL_GPIO_ALTERNATE(GPIO_InitStruct->Alternate));
<> 157:ff67d9f36b67 238
<> 157:ff67d9f36b67 239 /* Speed mode configuration */
<> 157:ff67d9f36b67 240 if (POSITION_VAL(currentpin) < 0x00000008U)
<> 157:ff67d9f36b67 241 {
<> 157:ff67d9f36b67 242 LL_GPIO_SetAFPin_0_7(GPIOx, currentpin, GPIO_InitStruct->Alternate);
<> 157:ff67d9f36b67 243 }
<> 157:ff67d9f36b67 244 else
<> 157:ff67d9f36b67 245 {
<> 157:ff67d9f36b67 246 LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate);
<> 157:ff67d9f36b67 247 }
<> 157:ff67d9f36b67 248 }
<> 157:ff67d9f36b67 249 }
<> 157:ff67d9f36b67 250 pinpos++;
<> 157:ff67d9f36b67 251 }
<> 157:ff67d9f36b67 252
<> 157:ff67d9f36b67 253 if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
<> 157:ff67d9f36b67 254 {
<> 157:ff67d9f36b67 255 /* Check Output mode parameters */
<> 157:ff67d9f36b67 256 assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType));
<> 157:ff67d9f36b67 257
<> 157:ff67d9f36b67 258 /* Output mode configuration*/
<> 157:ff67d9f36b67 259 LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType);
<> 157:ff67d9f36b67 260
<> 157:ff67d9f36b67 261 }
<> 157:ff67d9f36b67 262 return (SUCCESS);
<> 157:ff67d9f36b67 263 }
<> 157:ff67d9f36b67 264
<> 157:ff67d9f36b67 265 /**
<> 157:ff67d9f36b67 266 * @brief Set each @ref LL_GPIO_InitTypeDef field to default value.
<> 157:ff67d9f36b67 267 * @param GPIO_InitStruct: pointer to a @ref LL_GPIO_InitTypeDef structure
<> 157:ff67d9f36b67 268 * whose fields will be set to default values.
<> 157:ff67d9f36b67 269 * @retval None
<> 157:ff67d9f36b67 270 */
<> 157:ff67d9f36b67 271
<> 157:ff67d9f36b67 272 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct)
<> 157:ff67d9f36b67 273 {
<> 157:ff67d9f36b67 274 /* Reset GPIO init structure parameters values */
<> 157:ff67d9f36b67 275 GPIO_InitStruct->Pin = LL_GPIO_PIN_ALL;
<> 157:ff67d9f36b67 276 GPIO_InitStruct->Mode = LL_GPIO_MODE_ANALOG;
<> 157:ff67d9f36b67 277 GPIO_InitStruct->Speed = LL_GPIO_SPEED_FREQ_LOW;
<> 157:ff67d9f36b67 278 GPIO_InitStruct->OutputType = LL_GPIO_OUTPUT_PUSHPULL;
<> 157:ff67d9f36b67 279 GPIO_InitStruct->Pull = LL_GPIO_PULL_NO;
<> 157:ff67d9f36b67 280 GPIO_InitStruct->Alternate = LL_GPIO_AF_0;
<> 157:ff67d9f36b67 281 }
<> 157:ff67d9f36b67 282
<> 157:ff67d9f36b67 283 /**
<> 157:ff67d9f36b67 284 * @}
<> 157:ff67d9f36b67 285 */
<> 157:ff67d9f36b67 286
<> 157:ff67d9f36b67 287 /**
<> 157:ff67d9f36b67 288 * @}
<> 157:ff67d9f36b67 289 */
<> 157:ff67d9f36b67 290
<> 157:ff67d9f36b67 291 /**
<> 157:ff67d9f36b67 292 * @}
<> 157:ff67d9f36b67 293 */
<> 157:ff67d9f36b67 294
<> 157:ff67d9f36b67 295 #endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) */
<> 157:ff67d9f36b67 296
<> 157:ff67d9f36b67 297 /**
<> 157:ff67d9f36b67 298 * @}
<> 157:ff67d9f36b67 299 */
<> 157:ff67d9f36b67 300
<> 157:ff67d9f36b67 301 #endif /* USE_FULL_LL_DRIVER */
<> 157:ff67d9f36b67 302
<> 157:ff67d9f36b67 303 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
<> 157:ff67d9f36b67 304