stm32h7xx_hal_msp.c 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file stm32h7xx_hal_msp.c
  5. * @brief This file provides code for the MSP Initialization
  6. * and de-Initialization codes.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * Copyright (c) 2024 STMicroelectronics.
  11. * All rights reserved.
  12. *
  13. * This software is licensed under terms that can be found in the LICENSE file
  14. * in the root directory of this software component.
  15. * If no LICENSE file comes with this software, it is provided AS-IS.
  16. *
  17. ******************************************************************************
  18. */
  19. /* USER CODE END Header */
  20. /* Includes ------------------------------------------------------------------*/
  21. #include "main.h"
  22. /* USER CODE BEGIN Includes */
  23. /* USER CODE END Includes */
  24. extern DMA_HandleTypeDef hdma_uart8_rx;
  25. extern DMA_HandleTypeDef hdma_uart8_tx;
  26. /* Private typedef -----------------------------------------------------------*/
  27. /* USER CODE BEGIN TD */
  28. /* USER CODE END TD */
  29. /* Private define ------------------------------------------------------------*/
  30. /* USER CODE BEGIN Define */
  31. /* USER CODE END Define */
  32. /* Private macro -------------------------------------------------------------*/
  33. /* USER CODE BEGIN Macro */
  34. /* USER CODE END Macro */
  35. /* Private variables ---------------------------------------------------------*/
  36. /* USER CODE BEGIN PV */
  37. /* USER CODE END PV */
  38. /* Private function prototypes -----------------------------------------------*/
  39. /* USER CODE BEGIN PFP */
  40. /* USER CODE END PFP */
  41. /* External functions --------------------------------------------------------*/
  42. /* USER CODE BEGIN ExternalFunctions */
  43. /* USER CODE END ExternalFunctions */
  44. /* USER CODE BEGIN 0 */
  45. /* USER CODE END 0 */
  46. /**
  47. * Initializes the Global MSP.
  48. */
  49. void HAL_MspInit(void)
  50. {
  51. /* USER CODE BEGIN MspInit 0 */
  52. /* USER CODE END MspInit 0 */
  53. __HAL_RCC_SYSCFG_CLK_ENABLE();
  54. /* System interrupt init*/
  55. /* PendSV_IRQn interrupt configuration */
  56. HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);
  57. /* Peripheral interrupt init */
  58. /* RCC_IRQn interrupt configuration */
  59. HAL_NVIC_SetPriority(RCC_IRQn, 5, 0);
  60. HAL_NVIC_EnableIRQ(RCC_IRQn);
  61. /* USER CODE BEGIN MspInit 1 */
  62. /* USER CODE END MspInit 1 */
  63. }
  64. /**
  65. * @brief CRC MSP Initialization
  66. * This function configures the hardware resources used in this example
  67. * @param hcrc: CRC handle pointer
  68. * @retval None
  69. */
  70. void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc)
  71. {
  72. if(hcrc->Instance==CRC)
  73. {
  74. /* USER CODE BEGIN CRC_MspInit 0 */
  75. /* USER CODE END CRC_MspInit 0 */
  76. /* Peripheral clock enable */
  77. __HAL_RCC_CRC_CLK_ENABLE();
  78. /* USER CODE BEGIN CRC_MspInit 1 */
  79. /* USER CODE END CRC_MspInit 1 */
  80. }
  81. }
  82. /**
  83. * @brief CRC MSP De-Initialization
  84. * This function freeze the hardware resources used in this example
  85. * @param hcrc: CRC handle pointer
  86. * @retval None
  87. */
  88. void HAL_CRC_MspDeInit(CRC_HandleTypeDef* hcrc)
  89. {
  90. if(hcrc->Instance==CRC)
  91. {
  92. /* USER CODE BEGIN CRC_MspDeInit 0 */
  93. /* USER CODE END CRC_MspDeInit 0 */
  94. /* Peripheral clock disable */
  95. __HAL_RCC_CRC_CLK_DISABLE();
  96. /* USER CODE BEGIN CRC_MspDeInit 1 */
  97. /* USER CODE END CRC_MspDeInit 1 */
  98. }
  99. }
  100. /**
  101. * @brief RNG MSP Initialization
  102. * This function configures the hardware resources used in this example
  103. * @param hrng: RNG handle pointer
  104. * @retval None
  105. */
  106. void HAL_RNG_MspInit(RNG_HandleTypeDef* hrng)
  107. {
  108. RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  109. if(hrng->Instance==RNG)
  110. {
  111. /* USER CODE BEGIN RNG_MspInit 0 */
  112. /* USER CODE END RNG_MspInit 0 */
  113. /** Initializes the peripherals clock
  114. */
  115. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RNG;
  116. PeriphClkInitStruct.RngClockSelection = RCC_RNGCLKSOURCE_HSI48;
  117. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  118. {
  119. Error_Handler();
  120. }
  121. /* Peripheral clock enable */
  122. __HAL_RCC_RNG_CLK_ENABLE();
  123. /* USER CODE BEGIN RNG_MspInit 1 */
  124. /* USER CODE END RNG_MspInit 1 */
  125. }
  126. }
  127. /**
  128. * @brief RNG MSP De-Initialization
  129. * This function freeze the hardware resources used in this example
  130. * @param hrng: RNG handle pointer
  131. * @retval None
  132. */
  133. void HAL_RNG_MspDeInit(RNG_HandleTypeDef* hrng)
  134. {
  135. if(hrng->Instance==RNG)
  136. {
  137. /* USER CODE BEGIN RNG_MspDeInit 0 */
  138. /* USER CODE END RNG_MspDeInit 0 */
  139. /* Peripheral clock disable */
  140. __HAL_RCC_RNG_CLK_DISABLE();
  141. /* USER CODE BEGIN RNG_MspDeInit 1 */
  142. /* USER CODE END RNG_MspDeInit 1 */
  143. }
  144. }
  145. /**
  146. * @brief UART MSP Initialization
  147. * This function configures the hardware resources used in this example
  148. * @param huart: UART handle pointer
  149. * @retval None
  150. */
  151. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  152. {
  153. GPIO_InitTypeDef GPIO_InitStruct = {0};
  154. RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  155. if(huart->Instance==UART8)
  156. {
  157. /* USER CODE BEGIN UART8_MspInit 0 */
  158. /* USER CODE END UART8_MspInit 0 */
  159. /** Initializes the peripherals clock
  160. */
  161. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART8;
  162. PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;
  163. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  164. {
  165. Error_Handler();
  166. }
  167. /* Peripheral clock enable */
  168. __HAL_RCC_UART8_CLK_ENABLE();
  169. __HAL_RCC_GPIOE_CLK_ENABLE();
  170. /**UART8 GPIO Configuration
  171. PE0 ------> UART8_RX
  172. PE1 ------> UART8_TX
  173. */
  174. GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
  175. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  176. GPIO_InitStruct.Pull = GPIO_NOPULL;
  177. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  178. GPIO_InitStruct.Alternate = GPIO_AF8_UART8;
  179. HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  180. /* UART8 DMA Init */
  181. /* UART8_RX Init */
  182. hdma_uart8_rx.Instance = DMA2_Stream7;
  183. hdma_uart8_rx.Init.Request = DMA_REQUEST_UART8_RX;
  184. hdma_uart8_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  185. hdma_uart8_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  186. hdma_uart8_rx.Init.MemInc = DMA_MINC_ENABLE;
  187. hdma_uart8_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  188. hdma_uart8_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  189. hdma_uart8_rx.Init.Mode = DMA_NORMAL;
  190. hdma_uart8_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
  191. hdma_uart8_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  192. if (HAL_DMA_Init(&hdma_uart8_rx) != HAL_OK)
  193. {
  194. Error_Handler();
  195. }
  196. __HAL_LINKDMA(huart,hdmarx,hdma_uart8_rx);
  197. /* UART8_TX Init */
  198. hdma_uart8_tx.Instance = DMA2_Stream6;
  199. hdma_uart8_tx.Init.Request = DMA_REQUEST_UART8_TX;
  200. hdma_uart8_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
  201. hdma_uart8_tx.Init.PeriphInc = DMA_PINC_DISABLE;
  202. hdma_uart8_tx.Init.MemInc = DMA_MINC_ENABLE;
  203. hdma_uart8_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  204. hdma_uart8_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  205. hdma_uart8_tx.Init.Mode = DMA_NORMAL;
  206. hdma_uart8_tx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
  207. hdma_uart8_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  208. if (HAL_DMA_Init(&hdma_uart8_tx) != HAL_OK)
  209. {
  210. Error_Handler();
  211. }
  212. __HAL_LINKDMA(huart,hdmatx,hdma_uart8_tx);
  213. /* UART8 interrupt Init */
  214. HAL_NVIC_SetPriority(UART8_IRQn, 5, 0);
  215. HAL_NVIC_EnableIRQ(UART8_IRQn);
  216. /* USER CODE BEGIN UART8_MspInit 1 */
  217. /* USER CODE END UART8_MspInit 1 */
  218. }
  219. else if(huart->Instance==USART1)
  220. {
  221. /* USER CODE BEGIN USART1_MspInit 0 */
  222. /* USER CODE END USART1_MspInit 0 */
  223. /** Initializes the peripherals clock
  224. */
  225. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1;
  226. PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2;
  227. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  228. {
  229. Error_Handler();
  230. }
  231. /* Peripheral clock enable */
  232. __HAL_RCC_USART1_CLK_ENABLE();
  233. __HAL_RCC_GPIOB_CLK_ENABLE();
  234. /**USART1 GPIO Configuration
  235. PB14 ------> USART1_TX
  236. PB15 ------> USART1_RX
  237. */
  238. GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15;
  239. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  240. GPIO_InitStruct.Pull = GPIO_NOPULL;
  241. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  242. GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
  243. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  244. /* USART1 interrupt Init */
  245. HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
  246. HAL_NVIC_EnableIRQ(USART1_IRQn);
  247. /* USER CODE BEGIN USART1_MspInit 1 */
  248. /* USER CODE END USART1_MspInit 1 */
  249. }
  250. else if(huart->Instance==USART2)
  251. {
  252. /* USER CODE BEGIN USART2_MspInit 0 */
  253. /* USER CODE END USART2_MspInit 0 */
  254. /** Initializes the peripherals clock
  255. */
  256. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART2;
  257. PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;
  258. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  259. {
  260. Error_Handler();
  261. }
  262. /* Peripheral clock enable */
  263. __HAL_RCC_USART2_CLK_ENABLE();
  264. __HAL_RCC_GPIOD_CLK_ENABLE();
  265. /**USART2 GPIO Configuration
  266. PD5 ------> USART2_TX
  267. PD6 ------> USART2_RX
  268. */
  269. GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;
  270. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  271. GPIO_InitStruct.Pull = GPIO_NOPULL;
  272. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  273. GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
  274. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  275. /* USART2 interrupt Init */
  276. HAL_NVIC_SetPriority(USART2_IRQn, 5, 0);
  277. HAL_NVIC_EnableIRQ(USART2_IRQn);
  278. /* USER CODE BEGIN USART2_MspInit 1 */
  279. /* USER CODE END USART2_MspInit 1 */
  280. }
  281. else if(huart->Instance==USART3)
  282. {
  283. /* USER CODE BEGIN USART3_MspInit 0 */
  284. /* USER CODE END USART3_MspInit 0 */
  285. /** Initializes the peripherals clock
  286. */
  287. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
  288. PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1;
  289. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  290. {
  291. Error_Handler();
  292. }
  293. /* Peripheral clock enable */
  294. __HAL_RCC_USART3_CLK_ENABLE();
  295. __HAL_RCC_GPIOD_CLK_ENABLE();
  296. /**USART3 GPIO Configuration
  297. PD8 ------> USART3_TX
  298. PD9 ------> USART3_RX
  299. */
  300. GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
  301. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  302. GPIO_InitStruct.Pull = GPIO_NOPULL;
  303. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  304. GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
  305. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  306. /* USART3 interrupt Init */
  307. HAL_NVIC_SetPriority(USART3_IRQn, 5, 0);
  308. HAL_NVIC_EnableIRQ(USART3_IRQn);
  309. /* USER CODE BEGIN USART3_MspInit 1 */
  310. /* USER CODE END USART3_MspInit 1 */
  311. }
  312. else if(huart->Instance==USART6)
  313. {
  314. /* USER CODE BEGIN USART6_MspInit 0 */
  315. /* USER CODE END USART6_MspInit 0 */
  316. /** Initializes the peripherals clock
  317. */
  318. PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6;
  319. PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2;
  320. if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
  321. {
  322. Error_Handler();
  323. }
  324. /* Peripheral clock enable */
  325. __HAL_RCC_USART6_CLK_ENABLE();
  326. __HAL_RCC_GPIOC_CLK_ENABLE();
  327. /**USART6 GPIO Configuration
  328. PC6 ------> USART6_TX
  329. PC7 ------> USART6_RX
  330. */
  331. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  332. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  333. GPIO_InitStruct.Pull = GPIO_NOPULL;
  334. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  335. GPIO_InitStruct.Alternate = GPIO_AF7_USART6;
  336. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  337. /* USART6 interrupt Init */
  338. HAL_NVIC_SetPriority(USART6_IRQn, 5, 0);
  339. HAL_NVIC_EnableIRQ(USART6_IRQn);
  340. /* USER CODE BEGIN USART6_MspInit 1 */
  341. /* USER CODE END USART6_MspInit 1 */
  342. }
  343. }
  344. /**
  345. * @brief UART MSP De-Initialization
  346. * This function freeze the hardware resources used in this example
  347. * @param huart: UART handle pointer
  348. * @retval None
  349. */
  350. void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
  351. {
  352. if(huart->Instance==UART8)
  353. {
  354. /* USER CODE BEGIN UART8_MspDeInit 0 */
  355. /* USER CODE END UART8_MspDeInit 0 */
  356. /* Peripheral clock disable */
  357. __HAL_RCC_UART8_CLK_DISABLE();
  358. /**UART8 GPIO Configuration
  359. PE0 ------> UART8_RX
  360. PE1 ------> UART8_TX
  361. */
  362. HAL_GPIO_DeInit(GPIOE, GPIO_PIN_0|GPIO_PIN_1);
  363. /* UART8 DMA DeInit */
  364. HAL_DMA_DeInit(huart->hdmarx);
  365. HAL_DMA_DeInit(huart->hdmatx);
  366. /* UART8 interrupt DeInit */
  367. HAL_NVIC_DisableIRQ(UART8_IRQn);
  368. /* USER CODE BEGIN UART8_MspDeInit 1 */
  369. /* USER CODE END UART8_MspDeInit 1 */
  370. }
  371. else if(huart->Instance==USART1)
  372. {
  373. /* USER CODE BEGIN USART1_MspDeInit 0 */
  374. /* USER CODE END USART1_MspDeInit 0 */
  375. /* Peripheral clock disable */
  376. __HAL_RCC_USART1_CLK_DISABLE();
  377. /**USART1 GPIO Configuration
  378. PB14 ------> USART1_TX
  379. PB15 ------> USART1_RX
  380. */
  381. HAL_GPIO_DeInit(GPIOB, GPIO_PIN_14|GPIO_PIN_15);
  382. /* USART1 interrupt DeInit */
  383. HAL_NVIC_DisableIRQ(USART1_IRQn);
  384. /* USER CODE BEGIN USART1_MspDeInit 1 */
  385. /* USER CODE END USART1_MspDeInit 1 */
  386. }
  387. else if(huart->Instance==USART2)
  388. {
  389. /* USER CODE BEGIN USART2_MspDeInit 0 */
  390. /* USER CODE END USART2_MspDeInit 0 */
  391. /* Peripheral clock disable */
  392. __HAL_RCC_USART2_CLK_DISABLE();
  393. /**USART2 GPIO Configuration
  394. PD5 ------> USART2_TX
  395. PD6 ------> USART2_RX
  396. */
  397. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5|GPIO_PIN_6);
  398. /* USART2 interrupt DeInit */
  399. HAL_NVIC_DisableIRQ(USART2_IRQn);
  400. /* USER CODE BEGIN USART2_MspDeInit 1 */
  401. /* USER CODE END USART2_MspDeInit 1 */
  402. }
  403. else if(huart->Instance==USART3)
  404. {
  405. /* USER CODE BEGIN USART3_MspDeInit 0 */
  406. /* USER CODE END USART3_MspDeInit 0 */
  407. /* Peripheral clock disable */
  408. __HAL_RCC_USART3_CLK_DISABLE();
  409. /**USART3 GPIO Configuration
  410. PD8 ------> USART3_TX
  411. PD9 ------> USART3_RX
  412. */
  413. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_8|GPIO_PIN_9);
  414. /* USART3 interrupt DeInit */
  415. HAL_NVIC_DisableIRQ(USART3_IRQn);
  416. /* USER CODE BEGIN USART3_MspDeInit 1 */
  417. /* USER CODE END USART3_MspDeInit 1 */
  418. }
  419. else if(huart->Instance==USART6)
  420. {
  421. /* USER CODE BEGIN USART6_MspDeInit 0 */
  422. /* USER CODE END USART6_MspDeInit 0 */
  423. /* Peripheral clock disable */
  424. __HAL_RCC_USART6_CLK_DISABLE();
  425. /**USART6 GPIO Configuration
  426. PC6 ------> USART6_TX
  427. PC7 ------> USART6_RX
  428. */
  429. HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7);
  430. /* USART6 interrupt DeInit */
  431. HAL_NVIC_DisableIRQ(USART6_IRQn);
  432. /* USER CODE BEGIN USART6_MspDeInit 1 */
  433. /* USER CODE END USART6_MspDeInit 1 */
  434. }
  435. }
  436. /* USER CODE BEGIN 1 */
  437. /* USER CODE END 1 */