main.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file : main.c
  5. * @brief : Main program body
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* USER CODE END Header */
  20. /* Includes ------------------------------------------------------------------*/
  21. #include "main.h"
  22. /* Private includes ----------------------------------------------------------*/
  23. /* USER CODE BEGIN Includes */
  24. /* USER CODE END Includes */
  25. /* Private typedef -----------------------------------------------------------*/
  26. /* USER CODE BEGIN PTD */
  27. /* USER CODE END PTD */
  28. /* Private define ------------------------------------------------------------*/
  29. /* USER CODE BEGIN PD */
  30. /* USER CODE END PD */
  31. /* Private macro -------------------------------------------------------------*/
  32. /* USER CODE BEGIN PM */
  33. /* USER CODE END PM */
  34. /* Private variables ---------------------------------------------------------*/
  35. ADC_HandleTypeDef hadc1;
  36. I2S_HandleTypeDef hi2s2;
  37. IWDG_HandleTypeDef hiwdg;
  38. RNG_HandleTypeDef hrng;
  39. RTC_HandleTypeDef hrtc;
  40. SD_HandleTypeDef hsd;
  41. SPI_HandleTypeDef hspi3;
  42. TIM_HandleTypeDef htim10;
  43. TIM_HandleTypeDef htim11;
  44. TIM_HandleTypeDef htim13;
  45. TIM_HandleTypeDef htim14;
  46. UART_HandleTypeDef huart1;
  47. UART_HandleTypeDef huart2;
  48. /* USER CODE BEGIN PV */
  49. /* USER CODE END PV */
  50. /* Private function prototypes -----------------------------------------------*/
  51. void SystemClock_Config(void);
  52. static void MX_GPIO_Init(void);
  53. static void MX_USART1_UART_Init(void);
  54. static void MX_ADC1_Init(void);
  55. static void MX_I2S2_Init(void);
  56. static void MX_IWDG_Init(void);
  57. static void MX_RTC_Init(void);
  58. static void MX_SDIO_SD_Init(void);
  59. static void MX_SPI3_Init(void);
  60. static void MX_TIM10_Init(void);
  61. static void MX_TIM11_Init(void);
  62. static void MX_TIM13_Init(void);
  63. static void MX_TIM14_Init(void);
  64. static void MX_RNG_Init(void);
  65. static void MX_USART2_UART_Init(void);
  66. /* USER CODE BEGIN PFP */
  67. /* USER CODE END PFP */
  68. /* Private user code ---------------------------------------------------------*/
  69. /* USER CODE BEGIN 0 */
  70. /* USER CODE END 0 */
  71. /**
  72. * @brief The application entry point.
  73. * @retval int
  74. */
  75. int main(void)
  76. {
  77. /* USER CODE BEGIN 1 */
  78. /* USER CODE END 1 */
  79. /* MCU Configuration--------------------------------------------------------*/
  80. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  81. HAL_Init();
  82. /* USER CODE BEGIN Init */
  83. /* USER CODE END Init */
  84. /* Configure the system clock */
  85. SystemClock_Config();
  86. /* USER CODE BEGIN SysInit */
  87. /* USER CODE END SysInit */
  88. /* Initialize all configured peripherals */
  89. MX_GPIO_Init();
  90. MX_USART1_UART_Init();
  91. MX_ADC1_Init();
  92. MX_I2S2_Init();
  93. MX_IWDG_Init();
  94. MX_RTC_Init();
  95. MX_SDIO_SD_Init();
  96. MX_SPI3_Init();
  97. MX_TIM10_Init();
  98. MX_TIM11_Init();
  99. MX_TIM13_Init();
  100. MX_TIM14_Init();
  101. MX_RNG_Init();
  102. MX_USART2_UART_Init();
  103. /* USER CODE BEGIN 2 */
  104. /* USER CODE END 2 */
  105. /* Infinite loop */
  106. /* USER CODE BEGIN WHILE */
  107. while (1)
  108. {
  109. /* USER CODE END WHILE */
  110. /* USER CODE BEGIN 3 */
  111. }
  112. /* USER CODE END 3 */
  113. }
  114. /**
  115. * @brief System Clock Configuration
  116. * @retval None
  117. */
  118. void SystemClock_Config(void)
  119. {
  120. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  121. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  122. RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  123. /** Configure the main internal regulator output voltage
  124. */
  125. __HAL_RCC_PWR_CLK_ENABLE();
  126. __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
  127. /** Initializes the CPU, AHB and APB busses clocks
  128. */
  129. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE
  130. |RCC_OSCILLATORTYPE_LSE;
  131. RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  132. RCC_OscInitStruct.LSEState = RCC_LSE_ON;
  133. RCC_OscInitStruct.LSIState = RCC_LSI_ON;
  134. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  135. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  136. RCC_OscInitStruct.PLL.PLLM = 25;
  137. RCC_OscInitStruct.PLL.PLLN = 336;
  138. RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  139. RCC_OscInitStruct.PLL.PLLQ = 7;
  140. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  141. {
  142. Error_Handler();
  143. }
  144. /** Initializes the CPU, AHB and APB busses clocks
  145. */
  146. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  147. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  148. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  149. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  150. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  151. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
  152. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
  153. {
  154. Error_Handler();
  155. }
  156. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S|RCC_PERIPHCLK_RTC;
  157. PeriphClkInitStruct.PLLI2S.PLLI2SN = 192;
  158. PeriphClkInitStruct.PLLI2S.PLLI2SR = 2;
  159. PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
  160. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  161. {
  162. Error_Handler();
  163. }
  164. }
  165. /**
  166. * @brief ADC1 Initialization Function
  167. * @param None
  168. * @retval None
  169. */
  170. static void MX_ADC1_Init(void)
  171. {
  172. /* USER CODE BEGIN ADC1_Init 0 */
  173. /* USER CODE END ADC1_Init 0 */
  174. ADC_ChannelConfTypeDef sConfig = {0};
  175. /* USER CODE BEGIN ADC1_Init 1 */
  176. /* USER CODE END ADC1_Init 1 */
  177. /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
  178. */
  179. hadc1.Instance = ADC1;
  180. hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
  181. hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  182. hadc1.Init.ScanConvMode = DISABLE;
  183. hadc1.Init.ContinuousConvMode = DISABLE;
  184. hadc1.Init.DiscontinuousConvMode = DISABLE;
  185. hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  186. hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  187. hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  188. hadc1.Init.NbrOfConversion = 1;
  189. hadc1.Init.DMAContinuousRequests = DISABLE;
  190. hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  191. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  192. {
  193. Error_Handler();
  194. }
  195. /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
  196. */
  197. sConfig.Channel = ADC_CHANNEL_9;
  198. sConfig.Rank = 1;
  199. sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
  200. if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  201. {
  202. Error_Handler();
  203. }
  204. /* USER CODE BEGIN ADC1_Init 2 */
  205. /* USER CODE END ADC1_Init 2 */
  206. }
  207. /**
  208. * @brief I2S2 Initialization Function
  209. * @param None
  210. * @retval None
  211. */
  212. static void MX_I2S2_Init(void)
  213. {
  214. /* USER CODE BEGIN I2S2_Init 0 */
  215. /* USER CODE END I2S2_Init 0 */
  216. /* USER CODE BEGIN I2S2_Init 1 */
  217. /* USER CODE END I2S2_Init 1 */
  218. hi2s2.Instance = SPI2;
  219. hi2s2.Init.Mode = I2S_MODE_MASTER_TX;
  220. hi2s2.Init.Standard = I2S_STANDARD_PHILIPS;
  221. hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;
  222. hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
  223. hi2s2.Init.AudioFreq = I2S_AUDIOFREQ_8K;
  224. hi2s2.Init.CPOL = I2S_CPOL_LOW;
  225. hi2s2.Init.ClockSource = I2S_CLOCK_PLL;
  226. hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_ENABLE;
  227. if (HAL_I2S_Init(&hi2s2) != HAL_OK)
  228. {
  229. Error_Handler();
  230. }
  231. /* USER CODE BEGIN I2S2_Init 2 */
  232. /* USER CODE END I2S2_Init 2 */
  233. }
  234. /**
  235. * @brief IWDG Initialization Function
  236. * @param None
  237. * @retval None
  238. */
  239. static void MX_IWDG_Init(void)
  240. {
  241. /* USER CODE BEGIN IWDG_Init 0 */
  242. /* USER CODE END IWDG_Init 0 */
  243. /* USER CODE BEGIN IWDG_Init 1 */
  244. /* USER CODE END IWDG_Init 1 */
  245. hiwdg.Instance = IWDG;
  246. hiwdg.Init.Prescaler = IWDG_PRESCALER_4;
  247. hiwdg.Init.Reload = 4095;
  248. if (HAL_IWDG_Init(&hiwdg) != HAL_OK)
  249. {
  250. Error_Handler();
  251. }
  252. /* USER CODE BEGIN IWDG_Init 2 */
  253. /* USER CODE END IWDG_Init 2 */
  254. }
  255. /**
  256. * @brief RNG Initialization Function
  257. * @param None
  258. * @retval None
  259. */
  260. static void MX_RNG_Init(void)
  261. {
  262. /* USER CODE BEGIN RNG_Init 0 */
  263. /* USER CODE END RNG_Init 0 */
  264. /* USER CODE BEGIN RNG_Init 1 */
  265. /* USER CODE END RNG_Init 1 */
  266. hrng.Instance = RNG;
  267. if (HAL_RNG_Init(&hrng) != HAL_OK)
  268. {
  269. Error_Handler();
  270. }
  271. /* USER CODE BEGIN RNG_Init 2 */
  272. /* USER CODE END RNG_Init 2 */
  273. }
  274. /**
  275. * @brief RTC Initialization Function
  276. * @param None
  277. * @retval None
  278. */
  279. static void MX_RTC_Init(void)
  280. {
  281. /* USER CODE BEGIN RTC_Init 0 */
  282. /* USER CODE END RTC_Init 0 */
  283. /* USER CODE BEGIN RTC_Init 1 */
  284. /* USER CODE END RTC_Init 1 */
  285. /** Initialize RTC Only
  286. */
  287. hrtc.Instance = RTC;
  288. hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  289. hrtc.Init.AsynchPrediv = 127;
  290. hrtc.Init.SynchPrediv = 255;
  291. hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  292. hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  293. hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  294. if (HAL_RTC_Init(&hrtc) != HAL_OK)
  295. {
  296. Error_Handler();
  297. }
  298. /* USER CODE BEGIN RTC_Init 2 */
  299. /* USER CODE END RTC_Init 2 */
  300. }
  301. /**
  302. * @brief SDIO Initialization Function
  303. * @param None
  304. * @retval None
  305. */
  306. static void MX_SDIO_SD_Init(void)
  307. {
  308. /* USER CODE BEGIN SDIO_Init 0 */
  309. /* USER CODE END SDIO_Init 0 */
  310. /* USER CODE BEGIN SDIO_Init 1 */
  311. /* USER CODE END SDIO_Init 1 */
  312. hsd.Instance = SDIO;
  313. hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
  314. hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
  315. hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
  316. hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
  317. hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  318. hsd.Init.ClockDiv = 0;
  319. if (HAL_SD_Init(&hsd) != HAL_OK)
  320. {
  321. Error_Handler();
  322. }
  323. if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK)
  324. {
  325. Error_Handler();
  326. }
  327. /* USER CODE BEGIN SDIO_Init 2 */
  328. /* USER CODE END SDIO_Init 2 */
  329. }
  330. /**
  331. * @brief SPI3 Initialization Function
  332. * @param None
  333. * @retval None
  334. */
  335. static void MX_SPI3_Init(void)
  336. {
  337. /* USER CODE BEGIN SPI3_Init 0 */
  338. /* USER CODE END SPI3_Init 0 */
  339. /* USER CODE BEGIN SPI3_Init 1 */
  340. /* USER CODE END SPI3_Init 1 */
  341. /* SPI3 parameter configuration*/
  342. hspi3.Instance = SPI3;
  343. hspi3.Init.Mode = SPI_MODE_MASTER;
  344. hspi3.Init.Direction = SPI_DIRECTION_2LINES;
  345. hspi3.Init.DataSize = SPI_DATASIZE_8BIT;
  346. hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
  347. hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;
  348. hspi3.Init.NSS = SPI_NSS_SOFT;
  349. hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  350. hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
  351. hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
  352. hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  353. hspi3.Init.CRCPolynomial = 10;
  354. if (HAL_SPI_Init(&hspi3) != HAL_OK)
  355. {
  356. Error_Handler();
  357. }
  358. /* USER CODE BEGIN SPI3_Init 2 */
  359. /* USER CODE END SPI3_Init 2 */
  360. }
  361. /**
  362. * @brief TIM10 Initialization Function
  363. * @param None
  364. * @retval None
  365. */
  366. static void MX_TIM10_Init(void)
  367. {
  368. /* USER CODE BEGIN TIM10_Init 0 */
  369. /* USER CODE END TIM10_Init 0 */
  370. TIM_OC_InitTypeDef sConfigOC = {0};
  371. /* USER CODE BEGIN TIM10_Init 1 */
  372. /* USER CODE END TIM10_Init 1 */
  373. htim10.Instance = TIM10;
  374. htim10.Init.Prescaler = 0;
  375. htim10.Init.CounterMode = TIM_COUNTERMODE_UP;
  376. htim10.Init.Period = 0;
  377. htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  378. htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  379. if (HAL_TIM_Base_Init(&htim10) != HAL_OK)
  380. {
  381. Error_Handler();
  382. }
  383. if (HAL_TIM_PWM_Init(&htim10) != HAL_OK)
  384. {
  385. Error_Handler();
  386. }
  387. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  388. sConfigOC.Pulse = 0;
  389. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  390. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  391. if (HAL_TIM_PWM_ConfigChannel(&htim10, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  392. {
  393. Error_Handler();
  394. }
  395. /* USER CODE BEGIN TIM10_Init 2 */
  396. /* USER CODE END TIM10_Init 2 */
  397. HAL_TIM_MspPostInit(&htim10);
  398. }
  399. /**
  400. * @brief TIM11 Initialization Function
  401. * @param None
  402. * @retval None
  403. */
  404. static void MX_TIM11_Init(void)
  405. {
  406. /* USER CODE BEGIN TIM11_Init 0 */
  407. /* USER CODE END TIM11_Init 0 */
  408. /* USER CODE BEGIN TIM11_Init 1 */
  409. /* USER CODE END TIM11_Init 1 */
  410. htim11.Instance = TIM11;
  411. htim11.Init.Prescaler = 0;
  412. htim11.Init.CounterMode = TIM_COUNTERMODE_UP;
  413. htim11.Init.Period = 0;
  414. htim11.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  415. htim11.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  416. if (HAL_TIM_Base_Init(&htim11) != HAL_OK)
  417. {
  418. Error_Handler();
  419. }
  420. /* USER CODE BEGIN TIM11_Init 2 */
  421. /* USER CODE END TIM11_Init 2 */
  422. }
  423. /**
  424. * @brief TIM13 Initialization Function
  425. * @param None
  426. * @retval None
  427. */
  428. static void MX_TIM13_Init(void)
  429. {
  430. /* USER CODE BEGIN TIM13_Init 0 */
  431. /* USER CODE END TIM13_Init 0 */
  432. /* USER CODE BEGIN TIM13_Init 1 */
  433. /* USER CODE END TIM13_Init 1 */
  434. htim13.Instance = TIM13;
  435. htim13.Init.Prescaler = 0;
  436. htim13.Init.CounterMode = TIM_COUNTERMODE_UP;
  437. htim13.Init.Period = 0;
  438. htim13.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  439. htim13.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  440. if (HAL_TIM_Base_Init(&htim13) != HAL_OK)
  441. {
  442. Error_Handler();
  443. }
  444. /* USER CODE BEGIN TIM13_Init 2 */
  445. /* USER CODE END TIM13_Init 2 */
  446. }
  447. /**
  448. * @brief TIM14 Initialization Function
  449. * @param None
  450. * @retval None
  451. */
  452. static void MX_TIM14_Init(void)
  453. {
  454. /* USER CODE BEGIN TIM14_Init 0 */
  455. /* USER CODE END TIM14_Init 0 */
  456. /* USER CODE BEGIN TIM14_Init 1 */
  457. /* USER CODE END TIM14_Init 1 */
  458. htim14.Instance = TIM14;
  459. htim14.Init.Prescaler = 0;
  460. htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
  461. htim14.Init.Period = 0;
  462. htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  463. htim14.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  464. if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
  465. {
  466. Error_Handler();
  467. }
  468. /* USER CODE BEGIN TIM14_Init 2 */
  469. /* USER CODE END TIM14_Init 2 */
  470. }
  471. /**
  472. * @brief USART1 Initialization Function
  473. * @param None
  474. * @retval None
  475. */
  476. static void MX_USART1_UART_Init(void)
  477. {
  478. /* USER CODE BEGIN USART1_Init 0 */
  479. /* USER CODE END USART1_Init 0 */
  480. /* USER CODE BEGIN USART1_Init 1 */
  481. /* USER CODE END USART1_Init 1 */
  482. huart1.Instance = USART1;
  483. huart1.Init.BaudRate = 115200;
  484. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  485. huart1.Init.StopBits = UART_STOPBITS_1;
  486. huart1.Init.Parity = UART_PARITY_NONE;
  487. huart1.Init.Mode = UART_MODE_TX_RX;
  488. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  489. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  490. if (HAL_UART_Init(&huart1) != HAL_OK)
  491. {
  492. Error_Handler();
  493. }
  494. /* USER CODE BEGIN USART1_Init 2 */
  495. /* USER CODE END USART1_Init 2 */
  496. }
  497. /**
  498. * @brief USART2 Initialization Function
  499. * @param None
  500. * @retval None
  501. */
  502. static void MX_USART2_UART_Init(void)
  503. {
  504. /* USER CODE BEGIN USART2_Init 0 */
  505. /* USER CODE END USART2_Init 0 */
  506. /* USER CODE BEGIN USART2_Init 1 */
  507. /* USER CODE END USART2_Init 1 */
  508. huart2.Instance = USART2;
  509. huart2.Init.BaudRate = 115200;
  510. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  511. huart2.Init.StopBits = UART_STOPBITS_1;
  512. huart2.Init.Parity = UART_PARITY_NONE;
  513. huart2.Init.Mode = UART_MODE_TX_RX;
  514. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  515. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  516. if (HAL_UART_Init(&huart2) != HAL_OK)
  517. {
  518. Error_Handler();
  519. }
  520. /* USER CODE BEGIN USART2_Init 2 */
  521. /* USER CODE END USART2_Init 2 */
  522. }
  523. /**
  524. * @brief GPIO Initialization Function
  525. * @param None
  526. * @retval None
  527. */
  528. static void MX_GPIO_Init(void)
  529. {
  530. /* GPIO Ports Clock Enable */
  531. __HAL_RCC_GPIOC_CLK_ENABLE();
  532. __HAL_RCC_GPIOF_CLK_ENABLE();
  533. __HAL_RCC_GPIOH_CLK_ENABLE();
  534. __HAL_RCC_GPIOA_CLK_ENABLE();
  535. __HAL_RCC_GPIOB_CLK_ENABLE();
  536. __HAL_RCC_GPIOI_CLK_ENABLE();
  537. __HAL_RCC_GPIOD_CLK_ENABLE();
  538. }
  539. /* USER CODE BEGIN 4 */
  540. /* USER CODE END 4 */
  541. /**
  542. * @brief This function is executed in case of error occurrence.
  543. * @retval None
  544. */
  545. void Error_Handler(void)
  546. {
  547. /* USER CODE BEGIN Error_Handler_Debug */
  548. /* User can add his own implementation to report the HAL error return state */
  549. /* USER CODE END Error_Handler_Debug */
  550. }
  551. #ifdef USE_FULL_ASSERT
  552. /**
  553. * @brief Reports the name of the source file and the source line number
  554. * where the assert_param error has occurred.
  555. * @param file: pointer to the source file name
  556. * @param line: assert_param error line source number
  557. * @retval None
  558. */
  559. void assert_failed(uint8_t *file, uint32_t line)
  560. {
  561. /* USER CODE BEGIN 6 */
  562. /* User can add his own implementation to report the file name and line number,
  563. tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  564. /* USER CODE END 6 */
  565. }
  566. #endif /* USE_FULL_ASSERT */
  567. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/