main.c 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file : main.c
  5. * @brief : Main program body
  6. ******************************************************************************
  7. ** This notice applies to any and all portions of this file
  8. * that are not between comment pairs USER CODE BEGIN and
  9. * USER CODE END. Other portions of this file, whether
  10. * inserted by the user or by software development tools
  11. * are owned by their respective copyright owners.
  12. *
  13. * COPYRIGHT(c) 2018 STMicroelectronics
  14. *
  15. * Redistribution and use in source and binary forms, with or without modification,
  16. * are permitted provided that the following conditions are met:
  17. * 1. Redistributions of source code must retain the above copyright notice,
  18. * this list of conditions and the following disclaimer.
  19. * 2. Redistributions in binary form must reproduce the above copyright notice,
  20. * this list of conditions and the following disclaimer in the documentation
  21. * and/or other materials provided with the distribution.
  22. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  23. * may be used to endorse or promote products derived from this software
  24. * without specific prior written permission.
  25. *
  26. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  27. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  29. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  30. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  32. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  33. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  34. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  35. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  36. *
  37. ******************************************************************************
  38. */
  39. /* USER CODE END Header */
  40. /* Includes ------------------------------------------------------------------*/
  41. #include "main.h"
  42. /* Private includes ----------------------------------------------------------*/
  43. /* USER CODE BEGIN Includes */
  44. /* USER CODE END Includes */
  45. /* Private typedef -----------------------------------------------------------*/
  46. /* USER CODE BEGIN PTD */
  47. /* USER CODE END PTD */
  48. /* Private define ------------------------------------------------------------*/
  49. /* USER CODE BEGIN PD */
  50. /* USER CODE END PD */
  51. /* Private macro -------------------------------------------------------------*/
  52. /* USER CODE BEGIN PM */
  53. /* USER CODE END PM */
  54. /* Private variables ---------------------------------------------------------*/
  55. ADC_HandleTypeDef hadc1;
  56. DAC_HandleTypeDef hdac1;
  57. IWDG_HandleTypeDef hiwdg;
  58. LPTIM_HandleTypeDef hlptim1;
  59. QSPI_HandleTypeDef hqspi;
  60. RTC_HandleTypeDef hrtc;
  61. SAI_HandleTypeDef hsai_BlockA1;
  62. SAI_HandleTypeDef hsai_BlockB1;
  63. SD_HandleTypeDef hsd1;
  64. SPI_HandleTypeDef hspi1;
  65. SPI_HandleTypeDef hspi2;
  66. SPI_HandleTypeDef hspi3;
  67. TIM_HandleTypeDef htim1;
  68. TIM_HandleTypeDef htim2;
  69. TIM_HandleTypeDef htim4;
  70. TIM_HandleTypeDef htim7;
  71. TIM_HandleTypeDef htim15;
  72. TIM_HandleTypeDef htim16;
  73. TIM_HandleTypeDef htim17;
  74. UART_HandleTypeDef huart1;
  75. UART_HandleTypeDef huart2;
  76. PCD_HandleTypeDef hpcd_USB_OTG_FS;
  77. /* USER CODE BEGIN PV */
  78. /* Private variables ---------------------------------------------------------*/
  79. /* USER CODE END PV */
  80. /* Private function prototypes -----------------------------------------------*/
  81. void SystemClock_Config(void);
  82. void PeriphCommonClock_Config(void);
  83. static void MX_GPIO_Init(void);
  84. static void MX_USART1_UART_Init(void);
  85. static void MX_USART2_UART_Init(void);
  86. static void MX_QUADSPI_Init(void);
  87. static void MX_SPI1_Init(void);
  88. static void MX_SPI2_Init(void);
  89. static void MX_RTC_Init(void);
  90. static void MX_ADC1_Init(void);
  91. static void MX_IWDG_Init(void);
  92. static void MX_TIM17_Init(void);
  93. static void MX_TIM16_Init(void);
  94. static void MX_TIM15_Init(void);
  95. static void MX_TIM4_Init(void);
  96. static void MX_TIM1_Init(void);
  97. static void MX_SAI1_Init(void);
  98. static void MX_SPI3_Init(void);
  99. static void MX_TIM2_Init(void);
  100. static void MX_USB_OTG_FS_PCD_Init(void);
  101. static void MX_LPTIM1_Init(void);
  102. static void MX_SDMMC1_SD_Init(void);
  103. static void MX_DAC1_Init(void);
  104. static void MX_TIM7_Init(void);
  105. /* USER CODE BEGIN PFP */
  106. /* Private function prototypes -----------------------------------------------*/
  107. /* USER CODE END PFP */
  108. /* Private user code ---------------------------------------------------------*/
  109. /* USER CODE BEGIN 0 */
  110. /* USER CODE END 0 */
  111. /**
  112. * @brief The application entry point.
  113. * @retval int
  114. */
  115. int main(void)
  116. {
  117. /* USER CODE BEGIN 1 */
  118. /* USER CODE END 1 */
  119. /* MCU Configuration--------------------------------------------------------*/
  120. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  121. HAL_Init();
  122. /* USER CODE BEGIN Init */
  123. /* USER CODE END Init */
  124. /* Configure the system clock */
  125. SystemClock_Config();
  126. /* Configure the peripherals common clocks */
  127. PeriphCommonClock_Config();
  128. /* USER CODE BEGIN SysInit */
  129. /* USER CODE END SysInit */
  130. /* Initialize all configured peripherals */
  131. MX_GPIO_Init();
  132. MX_USART1_UART_Init();
  133. MX_USART2_UART_Init();
  134. MX_QUADSPI_Init();
  135. MX_SPI1_Init();
  136. MX_SPI2_Init();
  137. MX_RTC_Init();
  138. MX_ADC1_Init();
  139. MX_IWDG_Init();
  140. MX_TIM17_Init();
  141. MX_TIM16_Init();
  142. MX_TIM15_Init();
  143. MX_TIM4_Init();
  144. MX_TIM1_Init();
  145. MX_SAI1_Init();
  146. MX_SPI3_Init();
  147. MX_TIM2_Init();
  148. MX_USB_OTG_FS_PCD_Init();
  149. MX_LPTIM1_Init();
  150. MX_SDMMC1_SD_Init();
  151. MX_DAC1_Init();
  152. MX_TIM7_Init();
  153. /* USER CODE BEGIN 2 */
  154. /* USER CODE END 2 */
  155. /* Infinite loop */
  156. /* USER CODE BEGIN WHILE */
  157. while (1)
  158. {
  159. /* USER CODE END WHILE */
  160. /* USER CODE BEGIN 3 */
  161. }
  162. /* USER CODE END 3 */
  163. }
  164. /**
  165. * @brief System Clock Configuration
  166. * @retval None
  167. */
  168. void SystemClock_Config(void)
  169. {
  170. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  171. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  172. /** Configure the main internal regulator output voltage
  173. */
  174. if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK)
  175. {
  176. Error_Handler();
  177. }
  178. /** Configure LSE Drive Capability
  179. */
  180. HAL_PWR_EnableBkUpAccess();
  181. __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
  182. /** Initializes the RCC Oscillators according to the specified parameters
  183. * in the RCC_OscInitTypeDef structure.
  184. */
  185. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE
  186. |RCC_OSCILLATORTYPE_LSE;
  187. RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  188. RCC_OscInitStruct.LSEState = RCC_LSE_ON;
  189. RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  190. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  191. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  192. RCC_OscInitStruct.PLL.PLLM = 1;
  193. RCC_OscInitStruct.PLL.PLLN = 20;
  194. RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7;
  195. RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
  196. RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
  197. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  198. {
  199. Error_Handler();
  200. }
  201. /** Initializes the CPU, AHB and APB buses clocks
  202. */
  203. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  204. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  205. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  206. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  207. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  208. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  209. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
  210. {
  211. Error_Handler();
  212. }
  213. }
  214. /**
  215. * @brief Peripherals Common Clock Configuration
  216. * @retval None
  217. */
  218. void PeriphCommonClock_Config(void)
  219. {
  220. RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  221. /** Initializes the peripherals clock
  222. */
  223. PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_SAI1|RCC_PERIPHCLK_USB
  224. |RCC_PERIPHCLK_SDMMC1|RCC_PERIPHCLK_ADC;
  225. PeriphClkInit.Sai1ClockSelection = RCC_SAI1CLKSOURCE_PLLSAI1;
  226. PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_PLLSAI1;
  227. PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1;
  228. PeriphClkInit.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLLSAI1;
  229. PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_HSE;
  230. PeriphClkInit.PLLSAI1.PLLSAI1M = 1;
  231. PeriphClkInit.PLLSAI1.PLLSAI1N = 12;
  232. PeriphClkInit.PLLSAI1.PLLSAI1P = RCC_PLLP_DIV7;
  233. PeriphClkInit.PLLSAI1.PLLSAI1Q = RCC_PLLQ_DIV2;
  234. PeriphClkInit.PLLSAI1.PLLSAI1R = RCC_PLLR_DIV2;
  235. PeriphClkInit.PLLSAI1.PLLSAI1ClockOut = RCC_PLLSAI1_SAI1CLK|RCC_PLLSAI1_48M2CLK
  236. |RCC_PLLSAI1_ADC1CLK;
  237. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  238. {
  239. Error_Handler();
  240. }
  241. }
  242. /**
  243. * @brief ADC1 Initialization Function
  244. * @param None
  245. * @retval None
  246. */
  247. static void MX_ADC1_Init(void)
  248. {
  249. /* USER CODE BEGIN ADC1_Init 0 */
  250. /* USER CODE END ADC1_Init 0 */
  251. ADC_MultiModeTypeDef multimode = {0};
  252. ADC_ChannelConfTypeDef sConfig = {0};
  253. /* USER CODE BEGIN ADC1_Init 1 */
  254. /* USER CODE END ADC1_Init 1 */
  255. /** Common config
  256. */
  257. hadc1.Instance = ADC1;
  258. hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
  259. hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  260. hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  261. hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  262. hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  263. hadc1.Init.LowPowerAutoWait = DISABLE;
  264. hadc1.Init.ContinuousConvMode = DISABLE;
  265. hadc1.Init.NbrOfConversion = 1;
  266. hadc1.Init.DiscontinuousConvMode = DISABLE;
  267. hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  268. hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  269. hadc1.Init.DMAContinuousRequests = DISABLE;
  270. hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
  271. hadc1.Init.OversamplingMode = DISABLE;
  272. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  273. {
  274. Error_Handler();
  275. }
  276. /** Configure the ADC multi-mode
  277. */
  278. multimode.Mode = ADC_MODE_INDEPENDENT;
  279. if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)
  280. {
  281. Error_Handler();
  282. }
  283. /** Configure Regular Channel
  284. */
  285. sConfig.Channel = ADC_CHANNEL_3;
  286. sConfig.Rank = ADC_REGULAR_RANK_1;
  287. sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
  288. sConfig.SingleDiff = ADC_SINGLE_ENDED;
  289. sConfig.OffsetNumber = ADC_OFFSET_NONE;
  290. sConfig.Offset = 0;
  291. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  292. {
  293. Error_Handler();
  294. }
  295. /* USER CODE BEGIN ADC1_Init 2 */
  296. /* USER CODE END ADC1_Init 2 */
  297. }
  298. /**
  299. * @brief DAC1 Initialization Function
  300. * @param None
  301. * @retval None
  302. */
  303. static void MX_DAC1_Init(void)
  304. {
  305. /* USER CODE BEGIN DAC1_Init 0 */
  306. /* USER CODE END DAC1_Init 0 */
  307. DAC_ChannelConfTypeDef sConfig = {0};
  308. /* USER CODE BEGIN DAC1_Init 1 */
  309. /* USER CODE END DAC1_Init 1 */
  310. /** DAC Initialization
  311. */
  312. hdac1.Instance = DAC1;
  313. if (HAL_DAC_Init(&hdac1) != HAL_OK)
  314. {
  315. Error_Handler();
  316. }
  317. /** DAC channel OUT1 config
  318. */
  319. sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
  320. sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
  321. sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
  322. sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_DISABLE;
  323. sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY;
  324. if (HAL_DAC_ConfigChannel(&hdac1, &sConfig, DAC_CHANNEL_1) != HAL_OK)
  325. {
  326. Error_Handler();
  327. }
  328. /* USER CODE BEGIN DAC1_Init 2 */
  329. /* USER CODE END DAC1_Init 2 */
  330. }
  331. /**
  332. * @brief IWDG Initialization Function
  333. * @param None
  334. * @retval None
  335. */
  336. static void MX_IWDG_Init(void)
  337. {
  338. /* USER CODE BEGIN IWDG_Init 0 */
  339. /* USER CODE END IWDG_Init 0 */
  340. /* USER CODE BEGIN IWDG_Init 1 */
  341. /* USER CODE END IWDG_Init 1 */
  342. hiwdg.Instance = IWDG;
  343. hiwdg.Init.Prescaler = IWDG_PRESCALER_4;
  344. hiwdg.Init.Window = 4095;
  345. hiwdg.Init.Reload = 4095;
  346. if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
  347. {
  348. Error_Handler();
  349. }
  350. /* USER CODE BEGIN IWDG_Init 2 */
  351. /* USER CODE END IWDG_Init 2 */
  352. }
  353. /**
  354. * @brief LPTIM1 Initialization Function
  355. * @param None
  356. * @retval None
  357. */
  358. static void MX_LPTIM1_Init(void)
  359. {
  360. /* USER CODE BEGIN LPTIM1_Init 0 */
  361. /* USER CODE END LPTIM1_Init 0 */
  362. /* USER CODE BEGIN LPTIM1_Init 1 */
  363. /* USER CODE END LPTIM1_Init 1 */
  364. hlptim1.Instance = LPTIM1;
  365. hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;
  366. hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
  367. hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;
  368. hlptim1.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH;
  369. hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
  370. hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
  371. hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;
  372. hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;
  373. if (HAL_LPTIM_Init(&hlptim1) != HAL_OK)
  374. {
  375. Error_Handler();
  376. }
  377. /* USER CODE BEGIN LPTIM1_Init 2 */
  378. /* USER CODE END LPTIM1_Init 2 */
  379. }
  380. /**
  381. * @brief QUADSPI Initialization Function
  382. * @param None
  383. * @retval None
  384. */
  385. static void MX_QUADSPI_Init(void)
  386. {
  387. /* USER CODE BEGIN QUADSPI_Init 0 */
  388. /* USER CODE END QUADSPI_Init 0 */
  389. /* USER CODE BEGIN QUADSPI_Init 1 */
  390. /* USER CODE END QUADSPI_Init 1 */
  391. /* QUADSPI parameter configuration*/
  392. hqspi.Instance = QUADSPI;
  393. hqspi.Init.ClockPrescaler = 255;
  394. hqspi.Init.FifoThreshold = 1;
  395. hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_NONE;
  396. hqspi.Init.FlashSize = 1;
  397. hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_1_CYCLE;
  398. hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
  399. if (HAL_QSPI_Init(&hqspi) != HAL_OK)
  400. {
  401. Error_Handler();
  402. }
  403. /* USER CODE BEGIN QUADSPI_Init 2 */
  404. /* USER CODE END QUADSPI_Init 2 */
  405. }
  406. /**
  407. * @brief RTC Initialization Function
  408. * @param None
  409. * @retval None
  410. */
  411. static void MX_RTC_Init(void)
  412. {
  413. /* USER CODE BEGIN RTC_Init 0 */
  414. /* USER CODE END RTC_Init 0 */
  415. /* USER CODE BEGIN RTC_Init 1 */
  416. /* USER CODE END RTC_Init 1 */
  417. /** Initialize RTC Only
  418. */
  419. hrtc.Instance = RTC;
  420. hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  421. hrtc.Init.AsynchPrediv = 127;
  422. hrtc.Init.SynchPrediv = 255;
  423. hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  424. hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  425. hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  426. hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  427. if (HAL_RTC_Init(&hrtc) != HAL_OK)
  428. {
  429. Error_Handler();
  430. }
  431. /* USER CODE BEGIN RTC_Init 2 */
  432. /* USER CODE END RTC_Init 2 */
  433. }
  434. /**
  435. * @brief SAI1 Initialization Function
  436. * @param None
  437. * @retval None
  438. */
  439. static void MX_SAI1_Init(void)
  440. {
  441. /* USER CODE BEGIN SAI1_Init 0 */
  442. /* USER CODE END SAI1_Init 0 */
  443. /* USER CODE BEGIN SAI1_Init 1 */
  444. /* USER CODE END SAI1_Init 1 */
  445. hsai_BlockA1.Instance = SAI1_Block_A;
  446. hsai_BlockA1.Init.AudioMode = SAI_MODEMASTER_TX;
  447. hsai_BlockA1.Init.Synchro = SAI_ASYNCHRONOUS;
  448. hsai_BlockA1.Init.OutputDrive = SAI_OUTPUTDRIVE_ENABLE;
  449. hsai_BlockA1.Init.NoDivider = SAI_MASTERDIVIDER_ENABLE;
  450. hsai_BlockA1.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_EMPTY;
  451. hsai_BlockA1.Init.AudioFrequency = SAI_AUDIO_FREQUENCY_44K;
  452. hsai_BlockA1.Init.SynchroExt = SAI_SYNCEXT_DISABLE;
  453. hsai_BlockA1.Init.MonoStereoMode = SAI_STEREOMODE;
  454. hsai_BlockA1.Init.CompandingMode = SAI_NOCOMPANDING;
  455. hsai_BlockA1.Init.TriState = SAI_OUTPUT_NOTRELEASED;
  456. if (HAL_SAI_InitProtocol(&hsai_BlockA1, SAI_I2S_STANDARD, SAI_PROTOCOL_DATASIZE_16BIT, 2) != HAL_OK)
  457. {
  458. Error_Handler();
  459. }
  460. hsai_BlockB1.Instance = SAI1_Block_B;
  461. hsai_BlockB1.Init.AudioMode = SAI_MODESLAVE_RX;
  462. hsai_BlockB1.Init.Synchro = SAI_SYNCHRONOUS;
  463. hsai_BlockB1.Init.OutputDrive = SAI_OUTPUTDRIVE_DISABLE;
  464. hsai_BlockB1.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_EMPTY;
  465. hsai_BlockB1.Init.SynchroExt = SAI_SYNCEXT_DISABLE;
  466. hsai_BlockB1.Init.MonoStereoMode = SAI_STEREOMODE;
  467. hsai_BlockB1.Init.CompandingMode = SAI_NOCOMPANDING;
  468. hsai_BlockB1.Init.TriState = SAI_OUTPUT_NOTRELEASED;
  469. if (HAL_SAI_InitProtocol(&hsai_BlockB1, SAI_I2S_STANDARD, SAI_PROTOCOL_DATASIZE_16BIT, 2) != HAL_OK)
  470. {
  471. Error_Handler();
  472. }
  473. /* USER CODE BEGIN SAI1_Init 2 */
  474. /* USER CODE END SAI1_Init 2 */
  475. }
  476. /**
  477. * @brief SDMMC1 Initialization Function
  478. * @param None
  479. * @retval None
  480. */
  481. static void MX_SDMMC1_SD_Init(void)
  482. {
  483. /* USER CODE BEGIN SDMMC1_Init 0 */
  484. /* USER CODE END SDMMC1_Init 0 */
  485. /* USER CODE BEGIN SDMMC1_Init 1 */
  486. /* USER CODE END SDMMC1_Init 1 */
  487. hsd1.Instance = SDMMC1;
  488. hsd1.Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING;
  489. hsd1.Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE;
  490. hsd1.Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE;
  491. hsd1.Init.BusWide = SDMMC_BUS_WIDE_1B;
  492. hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;
  493. hsd1.Init.ClockDiv = 0;
  494. if (HAL_SD_Init(&hsd1) != HAL_OK)
  495. {
  496. Error_Handler();
  497. }
  498. if (HAL_SD_ConfigWideBusOperation(&hsd1, SDMMC_BUS_WIDE_4B) != HAL_OK)
  499. {
  500. Error_Handler();
  501. }
  502. /* USER CODE BEGIN SDMMC1_Init 2 */
  503. /* USER CODE END SDMMC1_Init 2 */
  504. }
  505. /**
  506. * @brief SPI1 Initialization Function
  507. * @param None
  508. * @retval None
  509. */
  510. static void MX_SPI1_Init(void)
  511. {
  512. /* USER CODE BEGIN SPI1_Init 0 */
  513. /* USER CODE END SPI1_Init 0 */
  514. /* USER CODE BEGIN SPI1_Init 1 */
  515. /* USER CODE END SPI1_Init 1 */
  516. /* SPI1 parameter configuration*/
  517. hspi1.Instance = SPI1;
  518. hspi1.Init.Mode = SPI_MODE_MASTER;
  519. hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  520. hspi1.Init.DataSize = SPI_DATASIZE_4BIT;
  521. hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  522. hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  523. hspi1.Init.NSS = SPI_NSS_SOFT;
  524. hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  525. hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  526. hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  527. hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  528. hspi1.Init.CRCPolynomial = 7;
  529. hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  530. hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  531. if (HAL_SPI_Init(&hspi1) != HAL_OK)
  532. {
  533. Error_Handler();
  534. }
  535. /* USER CODE BEGIN SPI1_Init 2 */
  536. /* USER CODE END SPI1_Init 2 */
  537. }
  538. /**
  539. * @brief SPI2 Initialization Function
  540. * @param None
  541. * @retval None
  542. */
  543. static void MX_SPI2_Init(void)
  544. {
  545. /* USER CODE BEGIN SPI2_Init 0 */
  546. /* USER CODE END SPI2_Init 0 */
  547. /* USER CODE BEGIN SPI2_Init 1 */
  548. /* USER CODE END SPI2_Init 1 */
  549. /* SPI2 parameter configuration*/
  550. hspi2.Instance = SPI2;
  551. hspi2.Init.Mode = SPI_MODE_MASTER;
  552. hspi2.Init.Direction = SPI_DIRECTION_2LINES;
  553. hspi2.Init.DataSize = SPI_DATASIZE_4BIT;
  554. hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
  555. hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
  556. hspi2.Init.NSS = SPI_NSS_SOFT;
  557. hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  558. hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
  559. hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
  560. hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  561. hspi2.Init.CRCPolynomial = 7;
  562. hspi2.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  563. hspi2.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  564. if (HAL_SPI_Init(&hspi2) != HAL_OK)
  565. {
  566. Error_Handler();
  567. }
  568. /* USER CODE BEGIN SPI2_Init 2 */
  569. /* USER CODE END SPI2_Init 2 */
  570. }
  571. /**
  572. * @brief SPI3 Initialization Function
  573. * @param None
  574. * @retval None
  575. */
  576. static void MX_SPI3_Init(void)
  577. {
  578. /* USER CODE BEGIN SPI3_Init 0 */
  579. /* USER CODE END SPI3_Init 0 */
  580. /* USER CODE BEGIN SPI3_Init 1 */
  581. /* USER CODE END SPI3_Init 1 */
  582. /* SPI3 parameter configuration*/
  583. hspi3.Instance = SPI3;
  584. hspi3.Init.Mode = SPI_MODE_MASTER;
  585. hspi3.Init.Direction = SPI_DIRECTION_2LINES;
  586. hspi3.Init.DataSize = SPI_DATASIZE_4BIT;
  587. hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
  588. hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;
  589. hspi3.Init.NSS = SPI_NSS_SOFT;
  590. hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  591. hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
  592. hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
  593. hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  594. hspi3.Init.CRCPolynomial = 7;
  595. hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  596. hspi3.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  597. if (HAL_SPI_Init(&hspi3) != HAL_OK)
  598. {
  599. Error_Handler();
  600. }
  601. /* USER CODE BEGIN SPI3_Init 2 */
  602. /* USER CODE END SPI3_Init 2 */
  603. }
  604. /**
  605. * @brief TIM1 Initialization Function
  606. * @param None
  607. * @retval None
  608. */
  609. static void MX_TIM1_Init(void)
  610. {
  611. /* USER CODE BEGIN TIM1_Init 0 */
  612. /* USER CODE END TIM1_Init 0 */
  613. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  614. TIM_MasterConfigTypeDef sMasterConfig = {0};
  615. TIM_OC_InitTypeDef sConfigOC = {0};
  616. TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
  617. /* USER CODE BEGIN TIM1_Init 1 */
  618. /* USER CODE END TIM1_Init 1 */
  619. htim1.Instance = TIM1;
  620. htim1.Init.Prescaler = 0;
  621. htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  622. htim1.Init.Period = 65535;
  623. htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  624. htim1.Init.RepetitionCounter = 0;
  625. htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  626. if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
  627. {
  628. Error_Handler();
  629. }
  630. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  631. if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
  632. {
  633. Error_Handler();
  634. }
  635. if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
  636. {
  637. Error_Handler();
  638. }
  639. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  640. sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
  641. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  642. if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
  643. {
  644. Error_Handler();
  645. }
  646. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  647. sConfigOC.Pulse = 0;
  648. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  649. sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  650. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  651. sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  652. sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  653. if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  654. {
  655. Error_Handler();
  656. }
  657. sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
  658. sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
  659. sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  660. sBreakDeadTimeConfig.DeadTime = 0;
  661. sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  662. sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  663. sBreakDeadTimeConfig.BreakFilter = 0;
  664. sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
  665. sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
  666. sBreakDeadTimeConfig.Break2Filter = 0;
  667. sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
  668. if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
  669. {
  670. Error_Handler();
  671. }
  672. /* USER CODE BEGIN TIM1_Init 2 */
  673. /* USER CODE END TIM1_Init 2 */
  674. HAL_TIM_MspPostInit(&htim1);
  675. }
  676. /**
  677. * @brief TIM2 Initialization Function
  678. * @param None
  679. * @retval None
  680. */
  681. static void MX_TIM2_Init(void)
  682. {
  683. /* USER CODE BEGIN TIM2_Init 0 */
  684. /* USER CODE END TIM2_Init 0 */
  685. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  686. TIM_MasterConfigTypeDef sMasterConfig = {0};
  687. TIM_OC_InitTypeDef sConfigOC = {0};
  688. /* USER CODE BEGIN TIM2_Init 1 */
  689. /* USER CODE END TIM2_Init 1 */
  690. htim2.Instance = TIM2;
  691. htim2.Init.Prescaler = 0;
  692. htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  693. htim2.Init.Period = 4294967295;
  694. htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  695. htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  696. if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  697. {
  698. Error_Handler();
  699. }
  700. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  701. if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  702. {
  703. Error_Handler();
  704. }
  705. if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  706. {
  707. Error_Handler();
  708. }
  709. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  710. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  711. if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  712. {
  713. Error_Handler();
  714. }
  715. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  716. sConfigOC.Pulse = 0;
  717. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  718. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  719. if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
  720. {
  721. Error_Handler();
  722. }
  723. if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
  724. {
  725. Error_Handler();
  726. }
  727. /* USER CODE BEGIN TIM2_Init 2 */
  728. /* USER CODE END TIM2_Init 2 */
  729. HAL_TIM_MspPostInit(&htim2);
  730. }
  731. /**
  732. * @brief TIM4 Initialization Function
  733. * @param None
  734. * @retval None
  735. */
  736. static void MX_TIM4_Init(void)
  737. {
  738. /* USER CODE BEGIN TIM4_Init 0 */
  739. /* USER CODE END TIM4_Init 0 */
  740. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  741. TIM_MasterConfigTypeDef sMasterConfig = {0};
  742. TIM_OC_InitTypeDef sConfigOC = {0};
  743. /* USER CODE BEGIN TIM4_Init 1 */
  744. /* USER CODE END TIM4_Init 1 */
  745. htim4.Instance = TIM4;
  746. htim4.Init.Prescaler = 0;
  747. htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
  748. htim4.Init.Period = 65535;
  749. htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  750. htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  751. if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
  752. {
  753. Error_Handler();
  754. }
  755. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  756. if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
  757. {
  758. Error_Handler();
  759. }
  760. if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
  761. {
  762. Error_Handler();
  763. }
  764. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  765. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  766. if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
  767. {
  768. Error_Handler();
  769. }
  770. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  771. sConfigOC.Pulse = 0;
  772. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  773. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  774. if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  775. {
  776. Error_Handler();
  777. }
  778. if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
  779. {
  780. Error_Handler();
  781. }
  782. if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
  783. {
  784. Error_Handler();
  785. }
  786. if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
  787. {
  788. Error_Handler();
  789. }
  790. /* USER CODE BEGIN TIM4_Init 2 */
  791. /* USER CODE END TIM4_Init 2 */
  792. HAL_TIM_MspPostInit(&htim4);
  793. }
  794. /**
  795. * @brief TIM7 Initialization Function
  796. * @param None
  797. * @retval None
  798. */
  799. static void MX_TIM7_Init(void)
  800. {
  801. /* USER CODE BEGIN TIM7_Init 0 */
  802. /* USER CODE END TIM7_Init 0 */
  803. TIM_MasterConfigTypeDef sMasterConfig = {0};
  804. /* USER CODE BEGIN TIM7_Init 1 */
  805. /* USER CODE END TIM7_Init 1 */
  806. htim7.Instance = TIM7;
  807. htim7.Init.Prescaler = 0;
  808. htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
  809. htim7.Init.Period = 65535;
  810. htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  811. if (HAL_TIM_Base_Init(&htim7) != HAL_OK)
  812. {
  813. Error_Handler();
  814. }
  815. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  816. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  817. if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK)
  818. {
  819. Error_Handler();
  820. }
  821. /* USER CODE BEGIN TIM7_Init 2 */
  822. /* USER CODE END TIM7_Init 2 */
  823. }
  824. /**
  825. * @brief TIM15 Initialization Function
  826. * @param None
  827. * @retval None
  828. */
  829. static void MX_TIM15_Init(void)
  830. {
  831. /* USER CODE BEGIN TIM15_Init 0 */
  832. /* USER CODE END TIM15_Init 0 */
  833. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  834. TIM_MasterConfigTypeDef sMasterConfig = {0};
  835. /* USER CODE BEGIN TIM15_Init 1 */
  836. /* USER CODE END TIM15_Init 1 */
  837. htim15.Instance = TIM15;
  838. htim15.Init.Prescaler = 0;
  839. htim15.Init.CounterMode = TIM_COUNTERMODE_UP;
  840. htim15.Init.Period = 65535;
  841. htim15.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  842. htim15.Init.RepetitionCounter = 0;
  843. htim15.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  844. if (HAL_TIM_Base_Init(&htim15) != HAL_OK)
  845. {
  846. Error_Handler();
  847. }
  848. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  849. if (HAL_TIM_ConfigClockSource(&htim15, &sClockSourceConfig) != HAL_OK)
  850. {
  851. Error_Handler();
  852. }
  853. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  854. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  855. if (HAL_TIMEx_MasterConfigSynchronization(&htim15, &sMasterConfig) != HAL_OK)
  856. {
  857. Error_Handler();
  858. }
  859. /* USER CODE BEGIN TIM15_Init 2 */
  860. /* USER CODE END TIM15_Init 2 */
  861. }
  862. /**
  863. * @brief TIM16 Initialization Function
  864. * @param None
  865. * @retval None
  866. */
  867. static void MX_TIM16_Init(void)
  868. {
  869. /* USER CODE BEGIN TIM16_Init 0 */
  870. /* USER CODE END TIM16_Init 0 */
  871. /* USER CODE BEGIN TIM16_Init 1 */
  872. /* USER CODE END TIM16_Init 1 */
  873. htim16.Instance = TIM16;
  874. htim16.Init.Prescaler = 0;
  875. htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
  876. htim16.Init.Period = 65535;
  877. htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  878. htim16.Init.RepetitionCounter = 0;
  879. htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  880. if (HAL_TIM_Base_Init(&htim16) != HAL_OK)
  881. {
  882. Error_Handler();
  883. }
  884. /* USER CODE BEGIN TIM16_Init 2 */
  885. /* USER CODE END TIM16_Init 2 */
  886. }
  887. /**
  888. * @brief TIM17 Initialization Function
  889. * @param None
  890. * @retval None
  891. */
  892. static void MX_TIM17_Init(void)
  893. {
  894. /* USER CODE BEGIN TIM17_Init 0 */
  895. /* USER CODE END TIM17_Init 0 */
  896. /* USER CODE BEGIN TIM17_Init 1 */
  897. /* USER CODE END TIM17_Init 1 */
  898. htim17.Instance = TIM17;
  899. htim17.Init.Prescaler = 0;
  900. htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
  901. htim17.Init.Period = 65535;
  902. htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  903. htim17.Init.RepetitionCounter = 0;
  904. htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  905. if (HAL_TIM_Base_Init(&htim17) != HAL_OK)
  906. {
  907. Error_Handler();
  908. }
  909. /* USER CODE BEGIN TIM17_Init 2 */
  910. /* USER CODE END TIM17_Init 2 */
  911. }
  912. /**
  913. * @brief USART1 Initialization Function
  914. * @param None
  915. * @retval None
  916. */
  917. static void MX_USART1_UART_Init(void)
  918. {
  919. /* USER CODE BEGIN USART1_Init 0 */
  920. /* USER CODE END USART1_Init 0 */
  921. /* USER CODE BEGIN USART1_Init 1 */
  922. /* USER CODE END USART1_Init 1 */
  923. huart1.Instance = USART1;
  924. huart1.Init.BaudRate = 115200;
  925. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  926. huart1.Init.StopBits = UART_STOPBITS_1;
  927. huart1.Init.Parity = UART_PARITY_NONE;
  928. huart1.Init.Mode = UART_MODE_TX_RX;
  929. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  930. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  931. huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  932. huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  933. if (HAL_UART_Init(&huart1) != HAL_OK)
  934. {
  935. Error_Handler();
  936. }
  937. /* USER CODE BEGIN USART1_Init 2 */
  938. /* USER CODE END USART1_Init 2 */
  939. }
  940. /**
  941. * @brief USART2 Initialization Function
  942. * @param None
  943. * @retval None
  944. */
  945. static void MX_USART2_UART_Init(void)
  946. {
  947. /* USER CODE BEGIN USART2_Init 0 */
  948. /* USER CODE END USART2_Init 0 */
  949. /* USER CODE BEGIN USART2_Init 1 */
  950. /* USER CODE END USART2_Init 1 */
  951. huart2.Instance = USART2;
  952. huart2.Init.BaudRate = 115200;
  953. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  954. huart2.Init.StopBits = UART_STOPBITS_1;
  955. huart2.Init.Parity = UART_PARITY_NONE;
  956. huart2.Init.Mode = UART_MODE_TX_RX;
  957. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  958. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  959. huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  960. huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  961. if (HAL_UART_Init(&huart2) != HAL_OK)
  962. {
  963. Error_Handler();
  964. }
  965. /* USER CODE BEGIN USART2_Init 2 */
  966. /* USER CODE END USART2_Init 2 */
  967. }
  968. /**
  969. * @brief USB_OTG_FS Initialization Function
  970. * @param None
  971. * @retval None
  972. */
  973. static void MX_USB_OTG_FS_PCD_Init(void)
  974. {
  975. /* USER CODE BEGIN USB_OTG_FS_Init 0 */
  976. /* USER CODE END USB_OTG_FS_Init 0 */
  977. /* USER CODE BEGIN USB_OTG_FS_Init 1 */
  978. /* USER CODE END USB_OTG_FS_Init 1 */
  979. hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
  980. hpcd_USB_OTG_FS.Init.dev_endpoints = 6;
  981. hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL;
  982. hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
  983. hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE;
  984. hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
  985. hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE;
  986. hpcd_USB_OTG_FS.Init.battery_charging_enable = DISABLE;
  987. hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
  988. hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;
  989. if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK)
  990. {
  991. Error_Handler();
  992. }
  993. /* USER CODE BEGIN USB_OTG_FS_Init 2 */
  994. /* USER CODE END USB_OTG_FS_Init 2 */
  995. }
  996. /**
  997. * @brief GPIO Initialization Function
  998. * @param None
  999. * @retval None
  1000. */
  1001. static void MX_GPIO_Init(void)
  1002. {
  1003. /* GPIO Ports Clock Enable */
  1004. __HAL_RCC_GPIOE_CLK_ENABLE();
  1005. __HAL_RCC_GPIOC_CLK_ENABLE();
  1006. __HAL_RCC_GPIOH_CLK_ENABLE();
  1007. __HAL_RCC_GPIOA_CLK_ENABLE();
  1008. __HAL_RCC_GPIOB_CLK_ENABLE();
  1009. __HAL_RCC_GPIOD_CLK_ENABLE();
  1010. }
  1011. /* USER CODE BEGIN 4 */
  1012. /* USER CODE END 4 */
  1013. /**
  1014. * @brief This function is executed in case of error occurrence.
  1015. * @retval None
  1016. */
  1017. void Error_Handler(void)
  1018. {
  1019. /* USER CODE BEGIN Error_Handler_Debug */
  1020. /* User can add his own implementation to report the HAL error return state */
  1021. while(1)
  1022. {
  1023. }
  1024. /* USER CODE END Error_Handler_Debug */
  1025. }
  1026. #ifdef USE_FULL_ASSERT
  1027. /**
  1028. * @brief Reports the name of the source file and the source line number
  1029. * where the assert_param error has occurred.
  1030. * @param file: pointer to the source file name
  1031. * @param line: assert_param error line source number
  1032. * @retval None
  1033. */
  1034. void assert_failed(uint8_t *file, uint32_t line)
  1035. {
  1036. /* USER CODE BEGIN 6 */
  1037. /* User can add his own implementation to report the file name and line number,
  1038. tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  1039. /* USER CODE END 6 */
  1040. }
  1041. #endif /* USE_FULL_ASSERT */