main.c 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  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) 2023 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. UART_HandleTypeDef hlpuart1;
  37. UART_HandleTypeDef huart1;
  38. UART_HandleTypeDef huart2;
  39. SPI_HandleTypeDef hspi1;
  40. TIM_HandleTypeDef htim1;
  41. TIM_HandleTypeDef htim4;
  42. PCD_HandleTypeDef hpcd_USB_OTG_FS;
  43. /* USER CODE BEGIN PV */
  44. /* USER CODE END PV */
  45. /* Private function prototypes -----------------------------------------------*/
  46. void SystemClock_Config(void);
  47. static void MX_GPIO_Init(void);
  48. static void MX_ADC1_Init(void);
  49. static void MX_UCPD1_Init(void);
  50. static void MX_USART1_UART_Init(void);
  51. static void MX_USB_OTG_FS_PCD_Init(void);
  52. static void MX_ICACHE_Init(void);
  53. static void MX_LPUART1_UART_Init(void);
  54. static void MX_USART2_UART_Init(void);
  55. static void MX_SPI1_Init(void);
  56. static void MX_TIM1_Init(void);
  57. static void MX_TIM4_Init(void);
  58. /* USER CODE BEGIN PFP */
  59. /* USER CODE END PFP */
  60. /* Private user code ---------------------------------------------------------*/
  61. /* USER CODE BEGIN 0 */
  62. /* USER CODE END 0 */
  63. /**
  64. * @brief The application entry point.
  65. * @retval int
  66. */
  67. int main(void)
  68. {
  69. /* USER CODE BEGIN 1 */
  70. /* USER CODE END 1 */
  71. /* MCU Configuration--------------------------------------------------------*/
  72. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  73. HAL_Init();
  74. HAL_PWREx_EnableVddIO2();
  75. /* USER CODE BEGIN Init */
  76. /* USER CODE END Init */
  77. /* Configure the system clock */
  78. SystemClock_Config();
  79. /* USER CODE BEGIN SysInit */
  80. /* USER CODE END SysInit */
  81. /* Initialize all configured peripherals */
  82. MX_GPIO_Init();
  83. MX_ADC1_Init();
  84. MX_UCPD1_Init();
  85. MX_USART1_UART_Init();
  86. MX_USB_OTG_FS_PCD_Init();
  87. MX_ICACHE_Init();
  88. MX_LPUART1_UART_Init();
  89. MX_USART2_UART_Init();
  90. MX_SPI1_Init();
  91. MX_TIM1_Init();
  92. MX_TIM4_Init();
  93. /* USER CODE BEGIN 2 */
  94. /* USER CODE END 2 */
  95. /* Infinite loop */
  96. /* USER CODE BEGIN WHILE */
  97. while (1)
  98. {
  99. /* USER CODE END WHILE */
  100. /* USER CODE BEGIN 3 */
  101. }
  102. /* USER CODE END 3 */
  103. }
  104. /**
  105. * @brief System Clock Configuration
  106. * @retval None
  107. */
  108. void SystemClock_Config(void)
  109. {
  110. RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  111. RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  112. /** Configure the main internal regulator output voltage
  113. */
  114. if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK)
  115. {
  116. Error_Handler();
  117. }
  118. /** Initializes the CPU, AHB and APB busses clocks
  119. */
  120. RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSI;
  121. RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  122. RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
  123. RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  124. RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  125. RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  126. RCC_OscInitStruct.PLL.PLLMBOOST = RCC_PLLMBOOST_DIV1;
  127. RCC_OscInitStruct.PLL.PLLM = 1;
  128. RCC_OscInitStruct.PLL.PLLN = 10;
  129. RCC_OscInitStruct.PLL.PLLP = 2;
  130. RCC_OscInitStruct.PLL.PLLQ = 2;
  131. RCC_OscInitStruct.PLL.PLLR = 1;
  132. RCC_OscInitStruct.PLL.PLLRGE = RCC_PLLVCIRANGE_1;
  133. RCC_OscInitStruct.PLL.PLLFRACN = 0;
  134. if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  135. {
  136. Error_Handler();
  137. }
  138. /** Initializes the CPU, AHB and APB busses clocks
  139. */
  140. RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  141. |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
  142. |RCC_CLOCKTYPE_PCLK3;
  143. RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  144. RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  145. RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  146. RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  147. RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
  148. if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
  149. {
  150. Error_Handler();
  151. }
  152. __HAL_RCC_PWR_CLK_DISABLE();
  153. }
  154. /**
  155. * @brief ADC1 Initialization Function
  156. * @param None
  157. * @retval None
  158. */
  159. static void MX_ADC1_Init(void)
  160. {
  161. /* USER CODE BEGIN ADC1_Init 0 */
  162. /* USER CODE END ADC1_Init 0 */
  163. /* USER CODE BEGIN ADC1_Init 1 */
  164. /* USER CODE END ADC1_Init 1 */
  165. /** Common config
  166. */
  167. hadc1.Instance = ADC1;
  168. hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
  169. hadc1.Init.Resolution = ADC_RESOLUTION_14B;
  170. hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  171. hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  172. hadc1.Init.LowPowerAutoWait = DISABLE;
  173. hadc1.Init.ContinuousConvMode = DISABLE;
  174. hadc1.Init.NbrOfConversion = 1;
  175. hadc1.Init.DiscontinuousConvMode = DISABLE;
  176. hadc1.Init.DMAContinuousRequests = DISABLE;
  177. hadc1.Init.TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH;
  178. hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
  179. hadc1.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
  180. hadc1.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR;
  181. hadc1.Init.OversamplingMode = DISABLE;
  182. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  183. {
  184. Error_Handler();
  185. }
  186. /* USER CODE BEGIN ADC1_Init 2 */
  187. /* USER CODE END ADC1_Init 2 */
  188. }
  189. /**
  190. * @brief ICACHE Initialization Function
  191. * @param None
  192. * @retval None
  193. */
  194. static void MX_ICACHE_Init(void)
  195. {
  196. /* USER CODE BEGIN ICACHE_Init 0 */
  197. /* USER CODE END ICACHE_Init 0 */
  198. /* USER CODE BEGIN ICACHE_Init 1 */
  199. /* USER CODE END ICACHE_Init 1 */
  200. /** Enable instruction cache in 1-way (direct mapped cache)
  201. */
  202. if (HAL_ICACHE_ConfigAssociativityMode(ICACHE_1WAY) != HAL_OK)
  203. {
  204. Error_Handler();
  205. }
  206. if (HAL_ICACHE_Enable() != HAL_OK)
  207. {
  208. Error_Handler();
  209. }
  210. /* USER CODE BEGIN ICACHE_Init 2 */
  211. /* USER CODE END ICACHE_Init 2 */
  212. }
  213. /**
  214. * @brief LPUART1 Initialization Function
  215. * @param None
  216. * @retval None
  217. */
  218. static void MX_LPUART1_UART_Init(void)
  219. {
  220. /* USER CODE BEGIN LPUART1_Init 0 */
  221. /* USER CODE END LPUART1_Init 0 */
  222. /* USER CODE BEGIN LPUART1_Init 1 */
  223. /* USER CODE END LPUART1_Init 1 */
  224. hlpuart1.Instance = LPUART1;
  225. hlpuart1.Init.BaudRate = 209700;
  226. hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;
  227. hlpuart1.Init.StopBits = UART_STOPBITS_1;
  228. hlpuart1.Init.Parity = UART_PARITY_NONE;
  229. hlpuart1.Init.Mode = UART_MODE_TX_RX;
  230. hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  231. hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  232. hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  233. hlpuart1.FifoMode = UART_FIFOMODE_DISABLE;
  234. if (HAL_UART_Init(&hlpuart1) != HAL_OK)
  235. {
  236. Error_Handler();
  237. }
  238. if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  239. {
  240. Error_Handler();
  241. }
  242. if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  243. {
  244. Error_Handler();
  245. }
  246. if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)
  247. {
  248. Error_Handler();
  249. }
  250. /* USER CODE BEGIN LPUART1_Init 2 */
  251. /* USER CODE END LPUART1_Init 2 */
  252. }
  253. /**
  254. * @brief USART1 Initialization Function
  255. * @param None
  256. * @retval None
  257. */
  258. static void MX_USART1_UART_Init(void)
  259. {
  260. /* USER CODE BEGIN USART1_Init 0 */
  261. /* USER CODE END USART1_Init 0 */
  262. /* USER CODE BEGIN USART1_Init 1 */
  263. /* USER CODE END USART1_Init 1 */
  264. huart1.Instance = USART1;
  265. huart1.Init.BaudRate = 115200;
  266. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  267. huart1.Init.StopBits = UART_STOPBITS_1;
  268. huart1.Init.Parity = UART_PARITY_NONE;
  269. huart1.Init.Mode = UART_MODE_TX_RX;
  270. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  271. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  272. huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  273. huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  274. huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  275. if (HAL_UART_Init(&huart1) != HAL_OK)
  276. {
  277. Error_Handler();
  278. }
  279. if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  280. {
  281. Error_Handler();
  282. }
  283. if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  284. {
  285. Error_Handler();
  286. }
  287. if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
  288. {
  289. Error_Handler();
  290. }
  291. /* USER CODE BEGIN USART1_Init 2 */
  292. /* USER CODE END USART1_Init 2 */
  293. }
  294. /**
  295. * @brief USART2 Initialization Function
  296. * @param None
  297. * @retval None
  298. */
  299. static void MX_USART2_UART_Init(void)
  300. {
  301. /* USER CODE BEGIN USART2_Init 0 */
  302. /* USER CODE END USART2_Init 0 */
  303. /* USER CODE BEGIN USART2_Init 1 */
  304. /* USER CODE END USART2_Init 1 */
  305. huart2.Instance = USART2;
  306. huart2.Init.BaudRate = 115200;
  307. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  308. huart2.Init.StopBits = UART_STOPBITS_1;
  309. huart2.Init.Parity = UART_PARITY_NONE;
  310. huart2.Init.Mode = UART_MODE_TX_RX;
  311. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  312. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  313. huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  314. huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  315. huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  316. if (HAL_UART_Init(&huart2) != HAL_OK)
  317. {
  318. Error_Handler();
  319. }
  320. if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  321. {
  322. Error_Handler();
  323. }
  324. if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  325. {
  326. Error_Handler();
  327. }
  328. if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK)
  329. {
  330. Error_Handler();
  331. }
  332. /* USER CODE BEGIN USART2_Init 2 */
  333. /* USER CODE END USART2_Init 2 */
  334. }
  335. /**
  336. * @brief SPI1 Initialization Function
  337. * @param None
  338. * @retval None
  339. */
  340. static void MX_SPI1_Init(void)
  341. {
  342. /* USER CODE BEGIN SPI1_Init 0 */
  343. /* USER CODE END SPI1_Init 0 */
  344. SPI_AutonomousModeConfTypeDef HAL_SPI_AutonomousMode_Cfg_Struct = {0};
  345. /* USER CODE BEGIN SPI1_Init 1 */
  346. /* USER CODE END SPI1_Init 1 */
  347. /* SPI1 parameter configuration*/
  348. hspi1.Instance = SPI1;
  349. hspi1.Init.Mode = SPI_MODE_MASTER;
  350. hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  351. hspi1.Init.DataSize = SPI_DATASIZE_4BIT;
  352. hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  353. hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  354. hspi1.Init.NSS = SPI_NSS_SOFT;
  355. hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  356. hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  357. hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  358. hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  359. hspi1.Init.CRCPolynomial = 0x7;
  360. hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  361. hspi1.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
  362. hspi1.Init.FifoThreshold = SPI_FIFO_THRESHOLD_01DATA;
  363. hspi1.Init.TxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
  364. hspi1.Init.RxCRCInitializationPattern = SPI_CRC_INITIALIZATION_ALL_ZERO_PATTERN;
  365. hspi1.Init.MasterSSIdleness = SPI_MASTER_SS_IDLENESS_00CYCLE;
  366. hspi1.Init.MasterInterDataIdleness = SPI_MASTER_INTERDATA_IDLENESS_00CYCLE;
  367. hspi1.Init.MasterReceiverAutoSusp = SPI_MASTER_RX_AUTOSUSP_DISABLE;
  368. hspi1.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_DISABLE;
  369. hspi1.Init.IOSwap = SPI_IO_SWAP_DISABLE;
  370. hspi1.Init.ReadyMasterManagement = SPI_RDY_MASTER_MANAGEMENT_INTERNALLY;
  371. hspi1.Init.ReadyPolarity = SPI_RDY_POLARITY_HIGH;
  372. if (HAL_SPI_Init(&hspi1) != HAL_OK)
  373. {
  374. Error_Handler();
  375. }
  376. HAL_SPI_AutonomousMode_Cfg_Struct.TriggerState = SPI_AUTO_MODE_DISABLE;
  377. HAL_SPI_AutonomousMode_Cfg_Struct.TriggerSelection = SPI_GRP1_GPDMA_CH0_TCF_TRG;
  378. HAL_SPI_AutonomousMode_Cfg_Struct.TriggerPolarity = SPI_TRIG_POLARITY_RISING;
  379. if (HAL_SPIEx_SetConfigAutonomousMode(&hspi1, &HAL_SPI_AutonomousMode_Cfg_Struct) != HAL_OK)
  380. {
  381. Error_Handler();
  382. }
  383. /* USER CODE BEGIN SPI1_Init 2 */
  384. /* USER CODE END SPI1_Init 2 */
  385. }
  386. /**
  387. * @brief TIM1 Initialization Function
  388. * @param None
  389. * @retval None
  390. */
  391. static void MX_TIM1_Init(void)
  392. {
  393. /* USER CODE BEGIN TIM1_Init 0 */
  394. /* USER CODE END TIM1_Init 0 */
  395. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  396. TIM_MasterConfigTypeDef sMasterConfig = {0};
  397. TIM_OC_InitTypeDef sConfigOC = {0};
  398. TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
  399. /* USER CODE BEGIN TIM1_Init 1 */
  400. /* USER CODE END TIM1_Init 1 */
  401. htim1.Instance = TIM1;
  402. htim1.Init.Prescaler = 0;
  403. htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  404. htim1.Init.Period = 65535;
  405. htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  406. htim1.Init.RepetitionCounter = 0;
  407. htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  408. if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
  409. {
  410. Error_Handler();
  411. }
  412. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  413. if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
  414. {
  415. Error_Handler();
  416. }
  417. if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
  418. {
  419. Error_Handler();
  420. }
  421. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  422. sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
  423. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  424. if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
  425. {
  426. Error_Handler();
  427. }
  428. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  429. sConfigOC.Pulse = 0;
  430. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  431. sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
  432. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  433. sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
  434. sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
  435. if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  436. {
  437. Error_Handler();
  438. }
  439. if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
  440. {
  441. Error_Handler();
  442. }
  443. if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
  444. {
  445. Error_Handler();
  446. }
  447. sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
  448. sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
  449. sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  450. sBreakDeadTimeConfig.DeadTime = 0;
  451. sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  452. sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  453. sBreakDeadTimeConfig.BreakFilter = 0;
  454. sBreakDeadTimeConfig.BreakAFMode = TIM_BREAK_AFMODE_INPUT;
  455. sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
  456. sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
  457. sBreakDeadTimeConfig.Break2Filter = 0;
  458. sBreakDeadTimeConfig.Break2AFMode = TIM_BREAK_AFMODE_INPUT;
  459. sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
  460. if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
  461. {
  462. Error_Handler();
  463. }
  464. /* USER CODE BEGIN TIM1_Init 2 */
  465. /* USER CODE END TIM1_Init 2 */
  466. HAL_TIM_MspPostInit(&htim1);
  467. }
  468. /**
  469. * @brief TIM4 Initialization Function
  470. * @param None
  471. * @retval None
  472. */
  473. static void MX_TIM4_Init(void)
  474. {
  475. /* USER CODE BEGIN TIM4_Init 0 */
  476. /* USER CODE END TIM4_Init 0 */
  477. TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  478. TIM_MasterConfigTypeDef sMasterConfig = {0};
  479. TIM_OC_InitTypeDef sConfigOC = {0};
  480. /* USER CODE BEGIN TIM4_Init 1 */
  481. /* USER CODE END TIM4_Init 1 */
  482. htim4.Instance = TIM4;
  483. htim4.Init.Prescaler = 0;
  484. htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
  485. htim4.Init.Period = 4.294967295E9;
  486. htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  487. htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  488. if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
  489. {
  490. Error_Handler();
  491. }
  492. sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  493. if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
  494. {
  495. Error_Handler();
  496. }
  497. if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
  498. {
  499. Error_Handler();
  500. }
  501. sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  502. sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  503. if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
  504. {
  505. Error_Handler();
  506. }
  507. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  508. sConfigOC.Pulse = 0;
  509. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  510. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  511. if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
  512. {
  513. Error_Handler();
  514. }
  515. /* USER CODE BEGIN TIM4_Init 2 */
  516. /* USER CODE END TIM4_Init 2 */
  517. HAL_TIM_MspPostInit(&htim4);
  518. }
  519. /**
  520. * @brief UCPD1 Initialization Function
  521. * @param None
  522. * @retval None
  523. */
  524. static void MX_UCPD1_Init(void)
  525. {
  526. /* USER CODE BEGIN UCPD1_Init 0 */
  527. /* USER CODE END UCPD1_Init 0 */
  528. LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
  529. /* Peripheral clock enable */
  530. LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_UCPD1);
  531. LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOB);
  532. LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
  533. /**UCPD1 GPIO Configuration
  534. PB15 ------> UCPD1_CC2
  535. PA15 (JTDI) ------> UCPD1_CC1
  536. */
  537. GPIO_InitStruct.Pin = LL_GPIO_PIN_15;
  538. GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  539. GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  540. LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  541. GPIO_InitStruct.Pin = LL_GPIO_PIN_15;
  542. GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  543. GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  544. LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  545. /* USER CODE BEGIN UCPD1_Init 1 */
  546. /* USER CODE END UCPD1_Init 1 */
  547. /* USER CODE BEGIN UCPD1_Init 2 */
  548. /* USER CODE END UCPD1_Init 2 */
  549. }
  550. /**
  551. * @brief USB_OTG_FS Initialization Function
  552. * @param None
  553. * @retval None
  554. */
  555. static void MX_USB_OTG_FS_PCD_Init(void)
  556. {
  557. /* USER CODE BEGIN USB_OTG_FS_Init 0 */
  558. /* USER CODE END USB_OTG_FS_Init 0 */
  559. /* USER CODE BEGIN USB_OTG_FS_Init 1 */
  560. /* USER CODE END USB_OTG_FS_Init 1 */
  561. hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
  562. hpcd_USB_OTG_FS.Init.dev_endpoints = 6;
  563. hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
  564. hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE;
  565. hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
  566. hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE;
  567. hpcd_USB_OTG_FS.Init.battery_charging_enable = DISABLE;
  568. hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
  569. hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;
  570. if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK)
  571. {
  572. Error_Handler();
  573. }
  574. /* USER CODE BEGIN USB_OTG_FS_Init 2 */
  575. /* USER CODE END USB_OTG_FS_Init 2 */
  576. }
  577. /**
  578. * @brief GPIO Initialization Function
  579. * @param None
  580. * @retval None
  581. */
  582. static void MX_GPIO_Init(void)
  583. {
  584. GPIO_InitTypeDef GPIO_InitStruct = {0};
  585. /* GPIO Ports Clock Enable */
  586. __HAL_RCC_GPIOC_CLK_ENABLE();
  587. __HAL_RCC_GPIOA_CLK_ENABLE();
  588. __HAL_RCC_GPIOB_CLK_ENABLE();
  589. __HAL_RCC_GPIOE_CLK_ENABLE();
  590. __HAL_RCC_GPIOD_CLK_ENABLE();
  591. __HAL_RCC_GPIOG_CLK_ENABLE();
  592. /*Configure GPIO pin Output Level */
  593. HAL_GPIO_WritePin(GPIOG, GPIO_PIN_2, GPIO_PIN_RESET);
  594. /*Configure GPIO pin Output Level */
  595. HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_RESET);
  596. /*Configure GPIO pin Output Level */
  597. HAL_GPIO_WritePin(GPIOB, UCPD_DBn_Pin|LED_BLUE_Pin, GPIO_PIN_RESET);
  598. /*Configure GPIO pin : USER_BUTTON_Pin */
  599. GPIO_InitStruct.Pin = USER_BUTTON_Pin;
  600. GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  601. GPIO_InitStruct.Pull = GPIO_NOPULL;
  602. HAL_GPIO_Init(USER_BUTTON_GPIO_Port, &GPIO_InitStruct);
  603. /*Configure GPIO pin : UCPD_FLT_Pin */
  604. GPIO_InitStruct.Pin = UCPD_FLT_Pin;
  605. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  606. GPIO_InitStruct.Pull = GPIO_NOPULL;
  607. HAL_GPIO_Init(UCPD_FLT_GPIO_Port, &GPIO_InitStruct);
  608. /*Configure GPIO pin : PG2 */
  609. GPIO_InitStruct.Pin = GPIO_PIN_2;
  610. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  611. GPIO_InitStruct.Pull = GPIO_NOPULL;
  612. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  613. HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
  614. /*Configure GPIO pin : LED_GREEN_Pin */
  615. GPIO_InitStruct.Pin = LED_GREEN_Pin;
  616. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  617. GPIO_InitStruct.Pull = GPIO_PULLUP;
  618. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  619. HAL_GPIO_Init(LED_GREEN_GPIO_Port, &GPIO_InitStruct);
  620. /*Configure GPIO pin : UCPD_DBn_Pin */
  621. GPIO_InitStruct.Pin = UCPD_DBn_Pin;
  622. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  623. GPIO_InitStruct.Pull = GPIO_NOPULL;
  624. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  625. HAL_GPIO_Init(UCPD_DBn_GPIO_Port, &GPIO_InitStruct);
  626. /*Configure GPIO pin : LED_BLUE_Pin */
  627. GPIO_InitStruct.Pin = LED_BLUE_Pin;
  628. GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  629. GPIO_InitStruct.Pull = GPIO_PULLUP;
  630. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  631. HAL_GPIO_Init(LED_BLUE_GPIO_Port, &GPIO_InitStruct);
  632. }
  633. /* USER CODE BEGIN 4 */
  634. /* USER CODE END 4 */
  635. /**
  636. * @brief This function is executed in case of error occurrence.
  637. * @retval None
  638. */
  639. void Error_Handler(void)
  640. {
  641. /* USER CODE BEGIN Error_Handler_Debug */
  642. /* User can add his own implementation to report the HAL error return state */
  643. __disable_irq();
  644. while (1)
  645. {
  646. }
  647. /* USER CODE END Error_Handler_Debug */
  648. }
  649. #ifdef USE_FULL_ASSERT
  650. /**
  651. * @brief Reports the name of the source file and the source line number
  652. * where the assert_param error has occurred.
  653. * @param file: pointer to the source file name
  654. * @param line: assert_param error line source number
  655. * @retval None
  656. */
  657. void assert_failed(uint8_t *file, uint32_t line)
  658. {
  659. /* USER CODE BEGIN 6 */
  660. /* User can add his own implementation to report the file name and line number,
  661. ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  662. /* USER CODE END 6 */
  663. }
  664. #endif /* USE_FULL_ASSERT */
  665. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/