1 /* USER CODE BEGIN Header */
\r
3 ******************************************************************************
\r
5 * @brief : Main program body
\r
6 ******************************************************************************
\r
9 * <h2><center>© Copyright (c) 2019 STMicroelectronics.
\r
10 * All rights reserved.</center></h2>
\r
12 * This software component is licensed by ST under BSD 3-Clause license,
\r
13 * the "License"; You may not use this file except in compliance with the
\r
14 * License. You may obtain a copy of the License at:
\r
15 * opensource.org/licenses/BSD-3-Clause
\r
17 ******************************************************************************
\r
19 /* USER CODE END Header */
\r
21 /* Includes ------------------------------------------------------------------*/
\r
24 /* Private includes ----------------------------------------------------------*/
\r
25 /* USER CODE BEGIN Includes */
\r
26 #include "app_main.h"
\r
27 /* USER CODE END Includes */
\r
29 /* Private typedef -----------------------------------------------------------*/
\r
30 /* USER CODE BEGIN PTD */
\r
32 /* USER CODE END PTD */
\r
34 /* Private define ------------------------------------------------------------*/
\r
35 /* USER CODE BEGIN PD */
\r
36 /* USER CODE END PD */
\r
38 /* Private macro -------------------------------------------------------------*/
\r
39 /* USER CODE BEGIN PM */
\r
41 /* USER CODE END PM */
\r
43 /* Private variables ---------------------------------------------------------*/
\r
44 DFSDM_Channel_HandleTypeDef hdfsdm1_channel1;
\r
46 I2C_HandleTypeDef hi2c2;
\r
48 QSPI_HandleTypeDef hqspi;
\r
50 SPI_HandleTypeDef hspi3;
\r
52 UART_HandleTypeDef huart1;
\r
53 UART_HandleTypeDef huart3;
\r
55 PCD_HandleTypeDef hpcd_USB_OTG_FS;
\r
57 /* USER CODE BEGIN PV */
\r
59 /* USER CODE END PV */
\r
61 /* Private function prototypes -----------------------------------------------*/
\r
62 void SystemClock_Config(void);
\r
63 static void MX_GPIO_Init(void);
\r
64 static void MX_DFSDM1_Init(void);
\r
65 static void MX_I2C2_Init(void);
\r
66 static void MX_QUADSPI_Init(void);
\r
67 static void MX_SPI3_Init(void);
\r
68 static void MX_USART1_UART_Init(void);
\r
69 static void MX_USART3_UART_Init(void);
\r
70 static void MX_USB_OTG_FS_PCD_Init(void);
\r
71 /* USER CODE BEGIN PFP */
\r
73 /* USER CODE END PFP */
\r
75 /* Private user code ---------------------------------------------------------*/
\r
76 /* USER CODE BEGIN 0 */
\r
78 /* USER CODE END 0 */
\r
81 * @brief The application entry point.
\r
86 /* USER CODE BEGIN 1 */
\r
88 /* USER CODE END 1 */
\r
91 /* MCU Configuration--------------------------------------------------------*/
\r
93 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
\r
96 /* USER CODE BEGIN Init */
\r
98 /* USER CODE END Init */
\r
100 /* Configure the system clock */
\r
101 SystemClock_Config();
\r
103 /* USER CODE BEGIN SysInit */
\r
105 /* USER CODE END SysInit */
\r
107 /* Initialize all configured peripherals */
\r
113 MX_USART1_UART_Init();
\r
114 MX_USART3_UART_Init();
\r
115 MX_USB_OTG_FS_PCD_Init();
\r
116 /* USER CODE BEGIN 2 */
\r
117 /* Call our entry point. */
\r
119 /* USER CODE END 2 */
\r
121 /* Infinite loop */
\r
122 /* USER CODE BEGIN WHILE */
\r
125 /* USER CODE END WHILE */
\r
127 /* USER CODE BEGIN 3 */
\r
129 /* USER CODE END 3 */
\r
133 * @brief System Clock Configuration
\r
136 void SystemClock_Config(void)
\r
138 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
\r
139 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
\r
140 RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
\r
142 /** Configure LSE Drive Capability
\r
144 HAL_PWR_EnableBkUpAccess();
\r
145 __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
\r
146 /** Initializes the CPU, AHB and APB busses clocks
\r
148 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE|RCC_OSCILLATORTYPE_MSI;
\r
149 RCC_OscInitStruct.LSEState = RCC_LSE_ON;
\r
150 RCC_OscInitStruct.MSIState = RCC_MSI_ON;
\r
151 RCC_OscInitStruct.MSICalibrationValue = 0;
\r
152 RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_6;
\r
153 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
\r
154 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_MSI;
\r
155 RCC_OscInitStruct.PLL.PLLM = 1;
\r
156 RCC_OscInitStruct.PLL.PLLN = 40;
\r
157 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7;
\r
158 RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
\r
159 RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
\r
160 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
\r
164 /** Initializes the CPU, AHB and APB busses clocks
\r
166 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
\r
167 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
\r
168 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
\r
169 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
\r
170 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
\r
171 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
\r
173 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
\r
177 PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_USART3
\r
178 |RCC_PERIPHCLK_I2C2|RCC_PERIPHCLK_DFSDM1
\r
179 |RCC_PERIPHCLK_USB;
\r
180 PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
\r
181 PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
\r
182 PeriphClkInit.I2c2ClockSelection = RCC_I2C2CLKSOURCE_PCLK1;
\r
183 PeriphClkInit.Dfsdm1ClockSelection = RCC_DFSDM1CLKSOURCE_PCLK;
\r
184 PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1;
\r
185 PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_MSI;
\r
186 PeriphClkInit.PLLSAI1.PLLSAI1M = 1;
\r
187 PeriphClkInit.PLLSAI1.PLLSAI1N = 24;
\r
188 PeriphClkInit.PLLSAI1.PLLSAI1P = RCC_PLLP_DIV7;
\r
189 PeriphClkInit.PLLSAI1.PLLSAI1Q = RCC_PLLQ_DIV2;
\r
190 PeriphClkInit.PLLSAI1.PLLSAI1R = RCC_PLLR_DIV2;
\r
191 PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_48M2CLK;
\r
192 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
\r
196 /** Configure the main internal regulator output voltage
\r
198 if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK)
\r
202 /** Enable MSI Auto calibration
\r
204 HAL_RCCEx_EnableMSIPLLMode();
\r
208 * @brief DFSDM1 Initialization Function
\r
212 static void MX_DFSDM1_Init(void)
\r
215 /* USER CODE BEGIN DFSDM1_Init 0 */
\r
217 /* USER CODE END DFSDM1_Init 0 */
\r
219 /* USER CODE BEGIN DFSDM1_Init 1 */
\r
221 /* USER CODE END DFSDM1_Init 1 */
\r
222 hdfsdm1_channel1.Instance = DFSDM1_Channel1;
\r
223 hdfsdm1_channel1.Init.OutputClock.Activation = ENABLE;
\r
224 hdfsdm1_channel1.Init.OutputClock.Selection = DFSDM_CHANNEL_OUTPUT_CLOCK_SYSTEM;
\r
225 hdfsdm1_channel1.Init.OutputClock.Divider = 2;
\r
226 hdfsdm1_channel1.Init.Input.Multiplexer = DFSDM_CHANNEL_EXTERNAL_INPUTS;
\r
227 hdfsdm1_channel1.Init.Input.DataPacking = DFSDM_CHANNEL_STANDARD_MODE;
\r
228 hdfsdm1_channel1.Init.Input.Pins = DFSDM_CHANNEL_FOLLOWING_CHANNEL_PINS;
\r
229 hdfsdm1_channel1.Init.SerialInterface.Type = DFSDM_CHANNEL_SPI_RISING;
\r
230 hdfsdm1_channel1.Init.SerialInterface.SpiClock = DFSDM_CHANNEL_SPI_CLOCK_INTERNAL;
\r
231 hdfsdm1_channel1.Init.Awd.FilterOrder = DFSDM_CHANNEL_FASTSINC_ORDER;
\r
232 hdfsdm1_channel1.Init.Awd.Oversampling = 1;
\r
233 hdfsdm1_channel1.Init.Offset = 0;
\r
234 hdfsdm1_channel1.Init.RightBitShift = 0x00;
\r
235 if (HAL_DFSDM_ChannelInit(&hdfsdm1_channel1) != HAL_OK)
\r
239 /* USER CODE BEGIN DFSDM1_Init 2 */
\r
241 /* USER CODE END DFSDM1_Init 2 */
\r
246 * @brief I2C2 Initialization Function
\r
250 static void MX_I2C2_Init(void)
\r
253 /* USER CODE BEGIN I2C2_Init 0 */
\r
255 /* USER CODE END I2C2_Init 0 */
\r
257 /* USER CODE BEGIN I2C2_Init 1 */
\r
259 /* USER CODE END I2C2_Init 1 */
\r
260 hi2c2.Instance = I2C2;
\r
261 hi2c2.Init.Timing = 0x10909CEC;
\r
262 hi2c2.Init.OwnAddress1 = 0;
\r
263 hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
\r
264 hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
\r
265 hi2c2.Init.OwnAddress2 = 0;
\r
266 hi2c2.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
\r
267 hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
\r
268 hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
\r
269 if (HAL_I2C_Init(&hi2c2) != HAL_OK)
\r
273 /** Configure Analogue filter
\r
275 if (HAL_I2CEx_ConfigAnalogFilter(&hi2c2, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
\r
279 /** Configure Digital filter
\r
281 if (HAL_I2CEx_ConfigDigitalFilter(&hi2c2, 0) != HAL_OK)
\r
285 /* USER CODE BEGIN I2C2_Init 2 */
\r
287 /* USER CODE END I2C2_Init 2 */
\r
292 * @brief QUADSPI Initialization Function
\r
296 static void MX_QUADSPI_Init(void)
\r
299 /* USER CODE BEGIN QUADSPI_Init 0 */
\r
301 /* USER CODE END QUADSPI_Init 0 */
\r
303 /* USER CODE BEGIN QUADSPI_Init 1 */
\r
305 /* USER CODE END QUADSPI_Init 1 */
\r
306 /* QUADSPI parameter configuration*/
\r
307 hqspi.Instance = QUADSPI;
\r
308 hqspi.Init.ClockPrescaler = 255;
\r
309 hqspi.Init.FifoThreshold = 1;
\r
310 hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_NONE;
\r
311 hqspi.Init.FlashSize = 1;
\r
312 hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_1_CYCLE;
\r
313 hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
\r
314 if (HAL_QSPI_Init(&hqspi) != HAL_OK)
\r
318 /* USER CODE BEGIN QUADSPI_Init 2 */
\r
320 /* USER CODE END QUADSPI_Init 2 */
\r
325 * @brief SPI3 Initialization Function
\r
329 static void MX_SPI3_Init(void)
\r
332 /* USER CODE BEGIN SPI3_Init 0 */
\r
334 /* USER CODE END SPI3_Init 0 */
\r
336 /* USER CODE BEGIN SPI3_Init 1 */
\r
338 /* USER CODE END SPI3_Init 1 */
\r
339 /* SPI3 parameter configuration*/
\r
340 hspi3.Instance = SPI3;
\r
341 hspi3.Init.Mode = SPI_MODE_MASTER;
\r
342 hspi3.Init.Direction = SPI_DIRECTION_2LINES;
\r
343 hspi3.Init.DataSize = SPI_DATASIZE_4BIT;
\r
344 hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
\r
345 hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;
\r
346 hspi3.Init.NSS = SPI_NSS_SOFT;
\r
347 hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
\r
348 hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
\r
349 hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
\r
350 hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
\r
351 hspi3.Init.CRCPolynomial = 7;
\r
352 hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
\r
353 hspi3.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
\r
354 if (HAL_SPI_Init(&hspi3) != HAL_OK)
\r
358 /* USER CODE BEGIN SPI3_Init 2 */
\r
360 /* USER CODE END SPI3_Init 2 */
\r
365 * @brief USART1 Initialization Function
\r
369 static void MX_USART1_UART_Init(void)
\r
372 /* USER CODE BEGIN USART1_Init 0 */
\r
374 /* USER CODE END USART1_Init 0 */
\r
376 /* USER CODE BEGIN USART1_Init 1 */
\r
378 /* USER CODE END USART1_Init 1 */
\r
379 huart1.Instance = USART1;
\r
380 huart1.Init.BaudRate = 115200;
\r
381 huart1.Init.WordLength = UART_WORDLENGTH_8B;
\r
382 huart1.Init.StopBits = UART_STOPBITS_1;
\r
383 huart1.Init.Parity = UART_PARITY_NONE;
\r
384 huart1.Init.Mode = UART_MODE_TX_RX;
\r
385 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
\r
386 huart1.Init.OverSampling = UART_OVERSAMPLING_16;
\r
387 huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
\r
388 huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
\r
389 if (HAL_UART_Init(&huart1) != HAL_OK)
\r
393 /* USER CODE BEGIN USART1_Init 2 */
\r
395 /* USER CODE END USART1_Init 2 */
\r
400 * @brief USART3 Initialization Function
\r
404 static void MX_USART3_UART_Init(void)
\r
407 /* USER CODE BEGIN USART3_Init 0 */
\r
409 /* USER CODE END USART3_Init 0 */
\r
411 /* USER CODE BEGIN USART3_Init 1 */
\r
413 /* USER CODE END USART3_Init 1 */
\r
414 huart3.Instance = USART3;
\r
415 huart3.Init.BaudRate = 115200;
\r
416 huart3.Init.WordLength = UART_WORDLENGTH_8B;
\r
417 huart3.Init.StopBits = UART_STOPBITS_1;
\r
418 huart3.Init.Parity = UART_PARITY_NONE;
\r
419 huart3.Init.Mode = UART_MODE_TX_RX;
\r
420 huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
\r
421 huart3.Init.OverSampling = UART_OVERSAMPLING_16;
\r
422 huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
\r
423 huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
\r
424 if (HAL_UART_Init(&huart3) != HAL_OK)
\r
428 /* USER CODE BEGIN USART3_Init 2 */
\r
430 /* USER CODE END USART3_Init 2 */
\r
435 * @brief USB_OTG_FS Initialization Function
\r
439 static void MX_USB_OTG_FS_PCD_Init(void)
\r
442 /* USER CODE BEGIN USB_OTG_FS_Init 0 */
\r
444 /* USER CODE END USB_OTG_FS_Init 0 */
\r
446 /* USER CODE BEGIN USB_OTG_FS_Init 1 */
\r
448 /* USER CODE END USB_OTG_FS_Init 1 */
\r
449 hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
\r
450 hpcd_USB_OTG_FS.Init.dev_endpoints = 6;
\r
451 hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL;
\r
452 hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
\r
453 hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE;
\r
454 hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
\r
455 hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE;
\r
456 hpcd_USB_OTG_FS.Init.battery_charging_enable = DISABLE;
\r
457 hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
\r
458 hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;
\r
459 if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK)
\r
463 /* USER CODE BEGIN USB_OTG_FS_Init 2 */
\r
465 /* USER CODE END USB_OTG_FS_Init 2 */
\r
470 * @brief GPIO Initialization Function
\r
474 static void MX_GPIO_Init(void)
\r
476 GPIO_InitTypeDef GPIO_InitStruct = {0};
\r
478 /* GPIO Ports Clock Enable */
\r
479 __HAL_RCC_GPIOE_CLK_ENABLE();
\r
480 __HAL_RCC_GPIOC_CLK_ENABLE();
\r
481 __HAL_RCC_GPIOA_CLK_ENABLE();
\r
482 __HAL_RCC_GPIOB_CLK_ENABLE();
\r
483 __HAL_RCC_GPIOD_CLK_ENABLE();
\r
485 /*Configure GPIO pin Output Level */
\r
486 HAL_GPIO_WritePin(GPIOE, M24SR64_Y_RF_DISABLE_Pin|M24SR64_Y_GPO_Pin|ISM43362_RST_Pin, GPIO_PIN_RESET);
\r
488 /*Configure GPIO pin Output Level */
\r
489 HAL_GPIO_WritePin(GPIOA, ARD_D10_Pin|SPBTLE_RF_RST_Pin|ARD_D9_Pin, GPIO_PIN_RESET);
\r
491 /*Configure GPIO pin Output Level */
\r
492 HAL_GPIO_WritePin(GPIOB, ARD_D8_Pin|ISM43362_BOOT0_Pin|ISM43362_WAKEUP_Pin|LED2_Pin
\r
493 |SPSGRF_915_SDN_Pin|ARD_D5_Pin, GPIO_PIN_RESET);
\r
495 /*Configure GPIO pin Output Level */
\r
496 HAL_GPIO_WritePin(GPIOD, USB_OTG_FS_PWR_EN_Pin|PMOD_RESET_Pin|STSAFE_A100_RESET_Pin, GPIO_PIN_RESET);
\r
498 /*Configure GPIO pin Output Level */
\r
499 HAL_GPIO_WritePin(SPBTLE_RF_SPI3_CSN_GPIO_Port, SPBTLE_RF_SPI3_CSN_Pin, GPIO_PIN_SET);
\r
501 /*Configure GPIO pin Output Level */
\r
502 HAL_GPIO_WritePin(GPIOC, VL53L0X_XSHUT_Pin|LED3_WIFI__LED4_BLE_Pin, GPIO_PIN_RESET);
\r
504 /*Configure GPIO pin Output Level */
\r
505 HAL_GPIO_WritePin(SPSGRF_915_SPI3_CSN_GPIO_Port, SPSGRF_915_SPI3_CSN_Pin, GPIO_PIN_SET);
\r
507 /*Configure GPIO pin Output Level */
\r
508 HAL_GPIO_WritePin(ISM43362_SPI3_CSN_GPIO_Port, ISM43362_SPI3_CSN_Pin, GPIO_PIN_SET);
\r
510 /*Configure GPIO pins : M24SR64_Y_RF_DISABLE_Pin M24SR64_Y_GPO_Pin ISM43362_RST_Pin ISM43362_SPI3_CSN_Pin */
\r
511 GPIO_InitStruct.Pin = M24SR64_Y_RF_DISABLE_Pin|M24SR64_Y_GPO_Pin|ISM43362_RST_Pin|ISM43362_SPI3_CSN_Pin;
\r
512 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
\r
513 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
514 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
\r
515 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
\r
517 /*Configure GPIO pins : USB_OTG_FS_OVRCR_EXTI3_Pin SPSGRF_915_GPIO3_EXTI5_Pin SPBTLE_RF_IRQ_EXTI6_Pin ISM43362_DRDY_EXTI1_Pin */
\r
518 GPIO_InitStruct.Pin = USB_OTG_FS_OVRCR_EXTI3_Pin|SPSGRF_915_GPIO3_EXTI5_Pin|SPBTLE_RF_IRQ_EXTI6_Pin|ISM43362_DRDY_EXTI1_Pin;
\r
519 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
\r
520 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
521 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
\r
523 /*Configure GPIO pin : BUTTON_EXTI13_Pin */
\r
524 GPIO_InitStruct.Pin = BUTTON_EXTI13_Pin;
\r
525 GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
\r
526 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
527 HAL_GPIO_Init(BUTTON_EXTI13_GPIO_Port, &GPIO_InitStruct);
\r
529 /*Configure GPIO pins : ARD_A5_Pin ARD_A4_Pin ARD_A3_Pin ARD_A2_Pin
\r
530 ARD_A1_Pin ARD_A0_Pin */
\r
531 GPIO_InitStruct.Pin = ARD_A5_Pin|ARD_A4_Pin|ARD_A3_Pin|ARD_A2_Pin
\r
532 |ARD_A1_Pin|ARD_A0_Pin;
\r
533 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG_ADC_CONTROL;
\r
534 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
535 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
\r
537 /*Configure GPIO pins : ARD_D1_Pin ARD_D0_Pin */
\r
538 GPIO_InitStruct.Pin = ARD_D1_Pin|ARD_D0_Pin;
\r
539 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
\r
540 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
541 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
\r
542 GPIO_InitStruct.Alternate = GPIO_AF8_UART4;
\r
543 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
\r
545 /*Configure GPIO pins : ARD_D10_Pin SPBTLE_RF_RST_Pin ARD_D9_Pin */
\r
546 GPIO_InitStruct.Pin = ARD_D10_Pin|SPBTLE_RF_RST_Pin|ARD_D9_Pin;
\r
547 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
\r
548 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
549 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
\r
550 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
\r
552 /*Configure GPIO pin : ARD_D4_Pin */
\r
553 GPIO_InitStruct.Pin = ARD_D4_Pin;
\r
554 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
\r
555 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
556 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
\r
557 GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
\r
558 HAL_GPIO_Init(ARD_D4_GPIO_Port, &GPIO_InitStruct);
\r
560 /*Configure GPIO pin : ARD_D7_Pin */
\r
561 GPIO_InitStruct.Pin = ARD_D7_Pin;
\r
562 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG_ADC_CONTROL;
\r
563 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
564 HAL_GPIO_Init(ARD_D7_GPIO_Port, &GPIO_InitStruct);
\r
566 /*Configure GPIO pins : ARD_D13_Pin ARD_D12_Pin ARD_D11_Pin */
\r
567 GPIO_InitStruct.Pin = ARD_D13_Pin|ARD_D12_Pin|ARD_D11_Pin;
\r
568 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
\r
569 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
570 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
\r
571 GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
\r
572 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
\r
574 /*Configure GPIO pin : ARD_D3_Pin */
\r
575 GPIO_InitStruct.Pin = ARD_D3_Pin;
\r
576 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
\r
577 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
578 HAL_GPIO_Init(ARD_D3_GPIO_Port, &GPIO_InitStruct);
\r
580 /*Configure GPIO pin : ARD_D6_Pin */
\r
581 GPIO_InitStruct.Pin = ARD_D6_Pin;
\r
582 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG_ADC_CONTROL;
\r
583 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
584 HAL_GPIO_Init(ARD_D6_GPIO_Port, &GPIO_InitStruct);
\r
586 /*Configure GPIO pins : ARD_D8_Pin ISM43362_BOOT0_Pin ISM43362_WAKEUP_Pin LED2_Pin
\r
587 SPSGRF_915_SDN_Pin ARD_D5_Pin SPSGRF_915_SPI3_CSN_Pin */
\r
588 GPIO_InitStruct.Pin = ARD_D8_Pin|ISM43362_BOOT0_Pin|ISM43362_WAKEUP_Pin|LED2_Pin
\r
589 |SPSGRF_915_SDN_Pin|ARD_D5_Pin|SPSGRF_915_SPI3_CSN_Pin;
\r
590 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
\r
591 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
592 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
\r
593 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
\r
595 /*Configure GPIO pins : LPS22HB_INT_DRDY_EXTI0_Pin LSM6DSL_INT1_EXTI11_Pin ARD_D2_Pin HTS221_DRDY_EXTI15_Pin
\r
596 PMOD_IRQ_EXTI12_Pin */
\r
597 GPIO_InitStruct.Pin = LPS22HB_INT_DRDY_EXTI0_Pin|LSM6DSL_INT1_EXTI11_Pin|ARD_D2_Pin|HTS221_DRDY_EXTI15_Pin
\r
598 |PMOD_IRQ_EXTI12_Pin;
\r
599 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
\r
600 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
601 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
\r
603 /*Configure GPIO pins : USB_OTG_FS_PWR_EN_Pin SPBTLE_RF_SPI3_CSN_Pin PMOD_RESET_Pin STSAFE_A100_RESET_Pin */
\r
604 GPIO_InitStruct.Pin = USB_OTG_FS_PWR_EN_Pin|SPBTLE_RF_SPI3_CSN_Pin|PMOD_RESET_Pin|STSAFE_A100_RESET_Pin;
\r
605 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
\r
606 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
607 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
\r
608 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
\r
610 /*Configure GPIO pins : VL53L0X_XSHUT_Pin LED3_WIFI__LED4_BLE_Pin */
\r
611 GPIO_InitStruct.Pin = VL53L0X_XSHUT_Pin|LED3_WIFI__LED4_BLE_Pin;
\r
612 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
\r
613 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
614 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
\r
615 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
\r
617 /*Configure GPIO pins : VL53L0X_GPIO1_EXTI7_Pin LSM3MDL_DRDY_EXTI8_Pin */
\r
618 GPIO_InitStruct.Pin = VL53L0X_GPIO1_EXTI7_Pin|LSM3MDL_DRDY_EXTI8_Pin;
\r
619 GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
\r
620 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
621 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
\r
623 /*Configure GPIO pin : PMOD_SPI2_SCK_Pin */
\r
624 GPIO_InitStruct.Pin = PMOD_SPI2_SCK_Pin;
\r
625 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
\r
626 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
627 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
\r
628 GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
\r
629 HAL_GPIO_Init(PMOD_SPI2_SCK_GPIO_Port, &GPIO_InitStruct);
\r
631 /*Configure GPIO pins : PMOD_UART2_CTS_Pin PMOD_UART2_RTS_Pin PMOD_UART2_TX_Pin PMOD_UART2_RX_Pin */
\r
632 GPIO_InitStruct.Pin = PMOD_UART2_CTS_Pin|PMOD_UART2_RTS_Pin|PMOD_UART2_TX_Pin|PMOD_UART2_RX_Pin;
\r
633 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
\r
634 GPIO_InitStruct.Pull = GPIO_NOPULL;
\r
635 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
\r
636 GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
\r
637 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
\r
639 /*Configure GPIO pins : ARD_D15_Pin ARD_D14_Pin */
\r
640 GPIO_InitStruct.Pin = ARD_D15_Pin|ARD_D14_Pin;
\r
641 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
\r
642 GPIO_InitStruct.Pull = GPIO_PULLUP;
\r
643 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
\r
644 GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
\r
645 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
\r
647 /* EXTI interrupt init*/
\r
648 HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
\r
649 HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
\r
651 HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
\r
652 HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
\r
656 /* USER CODE BEGIN 4 */
\r
658 /* USER CODE END 4 */
\r
661 * @brief Period elapsed callback in non blocking mode
\r
662 * @note This function is called when TIM6 interrupt took place, inside
\r
663 * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
\r
664 * a global variable "uwTick" used as application time base.
\r
665 * @param htim : TIM handle
\r
668 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
\r
670 /* USER CODE BEGIN Callback 0 */
\r
672 /* USER CODE END Callback 0 */
\r
673 if (htim->Instance == TIM6) {
\r
676 /* USER CODE BEGIN Callback 1 */
\r
678 /* USER CODE END Callback 1 */
\r
682 * @brief This function is executed in case of error occurrence.
\r
685 void Error_Handler(void)
\r
687 /* USER CODE BEGIN Error_Handler_Debug */
\r
688 /* User can add his own implementation to report the HAL error return state */
\r
690 /* USER CODE END Error_Handler_Debug */
\r
693 #ifdef USE_FULL_ASSERT
\r
695 * @brief Reports the name of the source file and the source line number
\r
696 * where the assert_param error has occurred.
\r
697 * @param file: pointer to the source file name
\r
698 * @param line: assert_param error line source number
\r
701 void assert_failed(char *file, uint32_t line)
\r
703 /* USER CODE BEGIN 6 */
\r
704 /* User can add his own implementation to report the file name and line number,
\r
705 tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
\r
706 /* USER CODE END 6 */
\r
708 #endif /* USE_FULL_ASSERT */
\r
710 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
\r