1*225f4ba4SMatthias Ringwald /**
2*225f4ba4SMatthias Ringwald ******************************************************************************
3*225f4ba4SMatthias Ringwald * File Name : gpio.c
4*225f4ba4SMatthias Ringwald * Description : This file provides code for the configuration
5*225f4ba4SMatthias Ringwald * of all used GPIO pins.
6*225f4ba4SMatthias Ringwald ******************************************************************************
7*225f4ba4SMatthias Ringwald * @attention
8*225f4ba4SMatthias Ringwald *
9*225f4ba4SMatthias Ringwald * <h2><center>© Copyright (c) 2019 STMicroelectronics.
10*225f4ba4SMatthias Ringwald * All rights reserved.</center></h2>
11*225f4ba4SMatthias Ringwald *
12*225f4ba4SMatthias Ringwald * This software component is licensed by ST under BSD 3-Clause license,
13*225f4ba4SMatthias Ringwald * the "License"; You may not use this file except in compliance with the
14*225f4ba4SMatthias Ringwald * License. You may obtain a copy of the License at:
15*225f4ba4SMatthias Ringwald * opensource.org/licenses/BSD-3-Clause
16*225f4ba4SMatthias Ringwald *
17*225f4ba4SMatthias Ringwald ******************************************************************************
18*225f4ba4SMatthias Ringwald */
19*225f4ba4SMatthias Ringwald
20*225f4ba4SMatthias Ringwald /* Includes ------------------------------------------------------------------*/
21*225f4ba4SMatthias Ringwald #include "gpio.h"
22*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 0 */
23*225f4ba4SMatthias Ringwald
24*225f4ba4SMatthias Ringwald /* USER CODE END 0 */
25*225f4ba4SMatthias Ringwald
26*225f4ba4SMatthias Ringwald /*----------------------------------------------------------------------------*/
27*225f4ba4SMatthias Ringwald /* Configure GPIO */
28*225f4ba4SMatthias Ringwald /*----------------------------------------------------------------------------*/
29*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 1 */
30*225f4ba4SMatthias Ringwald
31*225f4ba4SMatthias Ringwald /* USER CODE END 1 */
32*225f4ba4SMatthias Ringwald
33*225f4ba4SMatthias Ringwald /** Configure pins as
34*225f4ba4SMatthias Ringwald * Analog
35*225f4ba4SMatthias Ringwald * Input
36*225f4ba4SMatthias Ringwald * Output
37*225f4ba4SMatthias Ringwald * EVENT_OUT
38*225f4ba4SMatthias Ringwald * EXTI
39*225f4ba4SMatthias Ringwald PC3 ------> I2S2_SD
40*225f4ba4SMatthias Ringwald PA4 ------> I2S3_WS
41*225f4ba4SMatthias Ringwald PA5 ------> SPI1_SCK
42*225f4ba4SMatthias Ringwald PA6 ------> SPI1_MISO
43*225f4ba4SMatthias Ringwald PA7 ------> SPI1_MOSI
44*225f4ba4SMatthias Ringwald PB10 ------> I2S2_CK
45*225f4ba4SMatthias Ringwald PC7 ------> I2S3_MCK
46*225f4ba4SMatthias Ringwald PA9 ------> USB_OTG_FS_VBUS
47*225f4ba4SMatthias Ringwald PA10 ------> USB_OTG_FS_ID
48*225f4ba4SMatthias Ringwald PA11 ------> USB_OTG_FS_DM
49*225f4ba4SMatthias Ringwald PA12 ------> USB_OTG_FS_DP
50*225f4ba4SMatthias Ringwald PC10 ------> I2S3_CK
51*225f4ba4SMatthias Ringwald PC12 ------> I2S3_SD
52*225f4ba4SMatthias Ringwald PB6 ------> I2C1_SCL
53*225f4ba4SMatthias Ringwald PB9 ------> I2C1_SDA
54*225f4ba4SMatthias Ringwald */
MX_GPIO_Init(void)55*225f4ba4SMatthias Ringwald void MX_GPIO_Init(void)
56*225f4ba4SMatthias Ringwald {
57*225f4ba4SMatthias Ringwald
58*225f4ba4SMatthias Ringwald GPIO_InitTypeDef GPIO_InitStruct = {0};
59*225f4ba4SMatthias Ringwald
60*225f4ba4SMatthias Ringwald /* GPIO Ports Clock Enable */
61*225f4ba4SMatthias Ringwald __HAL_RCC_GPIOE_CLK_ENABLE();
62*225f4ba4SMatthias Ringwald __HAL_RCC_GPIOC_CLK_ENABLE();
63*225f4ba4SMatthias Ringwald __HAL_RCC_GPIOH_CLK_ENABLE();
64*225f4ba4SMatthias Ringwald __HAL_RCC_GPIOA_CLK_ENABLE();
65*225f4ba4SMatthias Ringwald __HAL_RCC_GPIOB_CLK_ENABLE();
66*225f4ba4SMatthias Ringwald __HAL_RCC_GPIOD_CLK_ENABLE();
67*225f4ba4SMatthias Ringwald
68*225f4ba4SMatthias Ringwald /*Configure GPIO pin Output Level */
69*225f4ba4SMatthias Ringwald HAL_GPIO_WritePin(GPIOE, CS_I2C_SPI_Pin|CC_nSHUTD_Pin, GPIO_PIN_RESET);
70*225f4ba4SMatthias Ringwald
71*225f4ba4SMatthias Ringwald /*Configure GPIO pin Output Level */
72*225f4ba4SMatthias Ringwald HAL_GPIO_WritePin(OTG_FS_PowerSwitchOn_GPIO_Port, OTG_FS_PowerSwitchOn_Pin, GPIO_PIN_RESET);
73*225f4ba4SMatthias Ringwald
74*225f4ba4SMatthias Ringwald /*Configure GPIO pin Output Level */
75*225f4ba4SMatthias Ringwald HAL_GPIO_WritePin(GPIOD, LD3_Pin|LD5_Pin|LD6_Pin|Audio_RST_Pin, GPIO_PIN_RESET);
76*225f4ba4SMatthias Ringwald
77*225f4ba4SMatthias Ringwald /*Configure GPIO pins : PEPin PEPin */
78*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = CS_I2C_SPI_Pin|CC_nSHUTD_Pin;
79*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
80*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
81*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
82*225f4ba4SMatthias Ringwald HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
83*225f4ba4SMatthias Ringwald
84*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
85*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = OTG_FS_PowerSwitchOn_Pin;
86*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
87*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
88*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
89*225f4ba4SMatthias Ringwald HAL_GPIO_Init(OTG_FS_PowerSwitchOn_GPIO_Port, &GPIO_InitStruct);
90*225f4ba4SMatthias Ringwald
91*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
92*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = PDM_OUT_Pin;
93*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
94*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
95*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
96*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
97*225f4ba4SMatthias Ringwald HAL_GPIO_Init(PDM_OUT_GPIO_Port, &GPIO_InitStruct);
98*225f4ba4SMatthias Ringwald
99*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
100*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = B1_Pin;
101*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
102*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
103*225f4ba4SMatthias Ringwald HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
104*225f4ba4SMatthias Ringwald
105*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
106*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = I2S3_WS_Pin;
107*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
108*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
109*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
110*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
111*225f4ba4SMatthias Ringwald HAL_GPIO_Init(I2S3_WS_GPIO_Port, &GPIO_InitStruct);
112*225f4ba4SMatthias Ringwald
113*225f4ba4SMatthias Ringwald /*Configure GPIO pins : PAPin PAPin PAPin */
114*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = SPI1_SCK_Pin|SPI1_MISO_Pin|SPI1_MOSI_Pin;
115*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
116*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
117*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
118*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
119*225f4ba4SMatthias Ringwald HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
120*225f4ba4SMatthias Ringwald
121*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
122*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = BOOT1_Pin;
123*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
124*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
125*225f4ba4SMatthias Ringwald HAL_GPIO_Init(BOOT1_GPIO_Port, &GPIO_InitStruct);
126*225f4ba4SMatthias Ringwald
127*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
128*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = CLK_IN_Pin;
129*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
130*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
131*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
132*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
133*225f4ba4SMatthias Ringwald HAL_GPIO_Init(CLK_IN_GPIO_Port, &GPIO_InitStruct);
134*225f4ba4SMatthias Ringwald
135*225f4ba4SMatthias Ringwald /*Configure GPIO pins : PDPin PDPin PDPin PDPin */
136*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = LD3_Pin|LD5_Pin|LD6_Pin|Audio_RST_Pin;
137*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
138*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
139*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
140*225f4ba4SMatthias Ringwald HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
141*225f4ba4SMatthias Ringwald
142*225f4ba4SMatthias Ringwald /*Configure GPIO pins : PCPin PCPin PCPin */
143*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = I2S3_MCK_Pin|I2S3_SCK_Pin|I2S3_SD_Pin;
144*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
145*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
146*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
147*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
148*225f4ba4SMatthias Ringwald HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
149*225f4ba4SMatthias Ringwald
150*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
151*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = VBUS_FS_Pin;
152*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
153*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
154*225f4ba4SMatthias Ringwald HAL_GPIO_Init(VBUS_FS_GPIO_Port, &GPIO_InitStruct);
155*225f4ba4SMatthias Ringwald
156*225f4ba4SMatthias Ringwald /*Configure GPIO pins : PAPin PAPin PAPin */
157*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = OTG_FS_ID_Pin|OTG_FS_DM_Pin|OTG_FS_DP_Pin;
158*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
159*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
160*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
161*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS;
162*225f4ba4SMatthias Ringwald HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
163*225f4ba4SMatthias Ringwald
164*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
165*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = OTG_FS_OverCurrent_Pin;
166*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
167*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
168*225f4ba4SMatthias Ringwald HAL_GPIO_Init(OTG_FS_OverCurrent_GPIO_Port, &GPIO_InitStruct);
169*225f4ba4SMatthias Ringwald
170*225f4ba4SMatthias Ringwald /*Configure GPIO pins : PBPin PBPin */
171*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = Audio_SCL_Pin|Audio_SDA_Pin;
172*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
173*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_PULLUP;
174*225f4ba4SMatthias Ringwald GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
175*225f4ba4SMatthias Ringwald GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
176*225f4ba4SMatthias Ringwald HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
177*225f4ba4SMatthias Ringwald
178*225f4ba4SMatthias Ringwald /*Configure GPIO pin : PtPin */
179*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pin = MEMS_INT2_Pin;
180*225f4ba4SMatthias Ringwald GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
181*225f4ba4SMatthias Ringwald GPIO_InitStruct.Pull = GPIO_NOPULL;
182*225f4ba4SMatthias Ringwald HAL_GPIO_Init(MEMS_INT2_GPIO_Port, &GPIO_InitStruct);
183*225f4ba4SMatthias Ringwald
184*225f4ba4SMatthias Ringwald }
185*225f4ba4SMatthias Ringwald
186*225f4ba4SMatthias Ringwald /* USER CODE BEGIN 2 */
187*225f4ba4SMatthias Ringwald
188*225f4ba4SMatthias Ringwald /* USER CODE END 2 */
189*225f4ba4SMatthias Ringwald
190*225f4ba4SMatthias Ringwald /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
191