stm32h7xx_hal_msp.c 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * File Name : stm32h7xx_hal_msp.c
  5. * Description : This file provides code for the MSP Initialization
  6. * and de-Initialization codes.
  7. ******************************************************************************
  8. ** This notice applies to any and all portions of this file
  9. * that are not between comment pairs USER CODE BEGIN and
  10. * USER CODE END. Other portions of this file, whether
  11. * inserted by the user or by software development tools
  12. * are owned by their respective copyright owners.
  13. *
  14. * COPYRIGHT(c) 2019 STMicroelectronics
  15. *
  16. * Redistribution and use in source and binary forms, with or without modification,
  17. * are permitted provided that the following conditions are met:
  18. * 1. Redistributions of source code must retain the above copyright notice,
  19. * this list of conditions and the following disclaimer.
  20. * 2. Redistributions in binary form must reproduce the above copyright notice,
  21. * this list of conditions and the following disclaimer in the documentation
  22. * and/or other materials provided with the distribution.
  23. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  24. * may be used to endorse or promote products derived from this software
  25. * without specific prior written permission.
  26. *
  27. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  28. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  29. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  30. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  31. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  32. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  33. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  34. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  35. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  36. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  37. *
  38. ******************************************************************************
  39. */
  40. /* USER CODE END Header */
  41. /* Includes ------------------------------------------------------------------*/
  42. #include "main.h"
  43. /* USER CODE BEGIN Includes */
  44. #include <drv_common.h>
  45. /* USER CODE END Includes */
  46. /* Private typedef -----------------------------------------------------------*/
  47. /* USER CODE BEGIN TD */
  48. /* USER CODE END TD */
  49. /* Private define ------------------------------------------------------------*/
  50. /* USER CODE BEGIN Define */
  51. /* USER CODE END Define */
  52. /* Private macro -------------------------------------------------------------*/
  53. /* USER CODE BEGIN Macro */
  54. /* USER CODE END Macro */
  55. /* Private variables ---------------------------------------------------------*/
  56. /* USER CODE BEGIN PV */
  57. /* USER CODE END PV */
  58. /* Private function prototypes -----------------------------------------------*/
  59. /* USER CODE BEGIN PFP */
  60. /* USER CODE END PFP */
  61. /* External functions --------------------------------------------------------*/
  62. /* USER CODE BEGIN ExternalFunctions */
  63. /* USER CODE END ExternalFunctions */
  64. /* USER CODE BEGIN 0 */
  65. /* USER CODE END 0 */
  66. /**
  67. * Initializes the Global MSP.
  68. */
  69. void HAL_MspInit(void)
  70. {
  71. /* USER CODE BEGIN MspInit 0 */
  72. /* USER CODE END MspInit 0 */
  73. __HAL_RCC_SYSCFG_CLK_ENABLE();
  74. /* System interrupt init*/
  75. /* USER CODE BEGIN MspInit 1 */
  76. /* USER CODE END MspInit 1 */
  77. }
  78. /**
  79. * @brief ADC MSP Initialization
  80. * This function configures the hardware resources used in this example
  81. * @param hadc: ADC handle pointer
  82. * @retval None
  83. */
  84. void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
  85. {
  86. GPIO_InitTypeDef GPIO_InitStruct = {0};
  87. if(hadc->Instance==ADC1)
  88. {
  89. /* USER CODE BEGIN ADC1_MspInit 0 */
  90. /* USER CODE END ADC1_MspInit 0 */
  91. /* Peripheral clock enable */
  92. __HAL_RCC_ADC12_CLK_ENABLE();
  93. __HAL_RCC_GPIOA_CLK_ENABLE();
  94. /**ADC1 GPIO Configuration
  95. PA5 ------> ADC1_INP19
  96. */
  97. GPIO_InitStruct.Pin = GPIO_PIN_5;
  98. GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  99. GPIO_InitStruct.Pull = GPIO_NOPULL;
  100. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  101. /* USER CODE BEGIN ADC1_MspInit 1 */
  102. /* USER CODE END ADC1_MspInit 1 */
  103. }
  104. }
  105. /**
  106. * @brief ADC MSP De-Initialization
  107. * This function freeze the hardware resources used in this example
  108. * @param hadc: ADC handle pointer
  109. * @retval None
  110. */
  111. void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
  112. {
  113. if(hadc->Instance==ADC1)
  114. {
  115. /* USER CODE BEGIN ADC1_MspDeInit 0 */
  116. /* USER CODE END ADC1_MspDeInit 0 */
  117. /* Peripheral clock disable */
  118. __HAL_RCC_ADC12_CLK_DISABLE();
  119. /**ADC1 GPIO Configuration
  120. PA5 ------> ADC1_INP19
  121. */
  122. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5);
  123. /* USER CODE BEGIN ADC1_MspDeInit 1 */
  124. /* USER CODE END ADC1_MspDeInit 1 */
  125. }
  126. }
  127. /**
  128. * @brief DAC MSP Initialization
  129. * This function configures the hardware resources used in this example
  130. * @param hdac: DAC handle pointer
  131. * @retval None
  132. */
  133. void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
  134. {
  135. GPIO_InitTypeDef GPIO_InitStruct = {0};
  136. if(hdac->Instance==DAC1)
  137. {
  138. /* USER CODE BEGIN DAC1_MspInit 0 */
  139. /* USER CODE END DAC1_MspInit 0 */
  140. /* Peripheral clock enable */
  141. __HAL_RCC_DAC12_CLK_ENABLE();
  142. __HAL_RCC_GPIOA_CLK_ENABLE();
  143. /**DAC1 GPIO Configuration
  144. PA4 ------> DAC1_OUT1
  145. */
  146. GPIO_InitStruct.Pin = GPIO_PIN_4;
  147. GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  148. GPIO_InitStruct.Pull = GPIO_NOPULL;
  149. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  150. /* USER CODE BEGIN DAC1_MspInit 1 */
  151. /* USER CODE END DAC1_MspInit 1 */
  152. }
  153. }
  154. /**
  155. * @brief DAC MSP De-Initialization
  156. * This function freeze the hardware resources used in this example
  157. * @param hdac: DAC handle pointer
  158. * @retval None
  159. */
  160. void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac)
  161. {
  162. if(hdac->Instance==DAC1)
  163. {
  164. /* USER CODE BEGIN DAC1_MspDeInit 0 */
  165. /* USER CODE END DAC1_MspDeInit 0 */
  166. /* Peripheral clock disable */
  167. __HAL_RCC_DAC12_CLK_DISABLE();
  168. /**DAC1 GPIO Configuration
  169. PA4 ------> DAC1_OUT1
  170. */
  171. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);
  172. /* USER CODE BEGIN DAC1_MspDeInit 1 */
  173. /* USER CODE END DAC1_MspDeInit 1 */
  174. }
  175. }
  176. /**
  177. * @brief DMA2D MSP Initialization
  178. * This function configures the hardware resources used in this example
  179. * @param hdma2d: DMA2D handle pointer
  180. * @retval None
  181. */
  182. void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef* hdma2d)
  183. {
  184. if(hdma2d->Instance==DMA2D)
  185. {
  186. /* USER CODE BEGIN DMA2D_MspInit 0 */
  187. /* USER CODE END DMA2D_MspInit 0 */
  188. /* Peripheral clock enable */
  189. __HAL_RCC_DMA2D_CLK_ENABLE();
  190. /* USER CODE BEGIN DMA2D_MspInit 1 */
  191. /* USER CODE END DMA2D_MspInit 1 */
  192. }
  193. }
  194. /**
  195. * @brief DMA2D MSP De-Initialization
  196. * This function freeze the hardware resources used in this example
  197. * @param hdma2d: DMA2D handle pointer
  198. * @retval None
  199. */
  200. void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef* hdma2d)
  201. {
  202. if(hdma2d->Instance==DMA2D)
  203. {
  204. /* USER CODE BEGIN DMA2D_MspDeInit 0 */
  205. /* USER CODE END DMA2D_MspDeInit 0 */
  206. /* Peripheral clock disable */
  207. __HAL_RCC_DMA2D_CLK_DISABLE();
  208. /* USER CODE BEGIN DMA2D_MspDeInit 1 */
  209. /* USER CODE END DMA2D_MspDeInit 1 */
  210. }
  211. }
  212. /**
  213. * @brief LTDC MSP Initialization
  214. * This function configures the hardware resources used in this example
  215. * @param hltdc: LTDC handle pointer
  216. * @retval None
  217. */
  218. void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
  219. {
  220. GPIO_InitTypeDef GPIO_InitStruct = {0};
  221. if(hltdc->Instance==LTDC)
  222. {
  223. /* USER CODE BEGIN LTDC_MspInit 0 */
  224. /* USER CODE END LTDC_MspInit 0 */
  225. /* Peripheral clock enable */
  226. __HAL_RCC_LTDC_CLK_ENABLE();
  227. __HAL_RCC_GPIOI_CLK_ENABLE();
  228. __HAL_RCC_GPIOF_CLK_ENABLE();
  229. __HAL_RCC_GPIOH_CLK_ENABLE();
  230. __HAL_RCC_GPIOG_CLK_ENABLE();
  231. /**LTDC GPIO Configuration
  232. PI9 ------> LTDC_VSYNC
  233. PI10 ------> LTDC_HSYNC
  234. PF10 ------> LTDC_DE
  235. PH9 ------> LTDC_R3
  236. PH10 ------> LTDC_R4
  237. PH11 ------> LTDC_R5
  238. PH12 ------> LTDC_R6
  239. PG6 ------> LTDC_R7
  240. PG7 ------> LTDC_CLK
  241. PH13 ------> LTDC_G2
  242. PH14 ------> LTDC_G3
  243. PH15 ------> LTDC_G4
  244. PI0 ------> LTDC_G5
  245. PI1 ------> LTDC_G6
  246. PI2 ------> LTDC_G7
  247. PG11 ------> LTDC_B3
  248. PI4 ------> LTDC_B4
  249. PI5 ------> LTDC_B5
  250. PI6 ------> LTDC_B6
  251. PI7 ------> LTDC_B7
  252. */
  253. GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_0|GPIO_PIN_1
  254. |GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
  255. |GPIO_PIN_7;
  256. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  257. GPIO_InitStruct.Pull = GPIO_NOPULL;
  258. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  259. GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
  260. HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
  261. GPIO_InitStruct.Pin = GPIO_PIN_10;
  262. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  263. GPIO_InitStruct.Pull = GPIO_NOPULL;
  264. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  265. GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
  266. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  267. GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12
  268. |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
  269. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  270. GPIO_InitStruct.Pull = GPIO_NOPULL;
  271. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  272. GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
  273. HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
  274. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_11;
  275. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  276. GPIO_InitStruct.Pull = GPIO_NOPULL;
  277. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  278. GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
  279. HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
  280. /* USER CODE BEGIN LTDC_MspInit 1 */
  281. /* USER CODE END LTDC_MspInit 1 */
  282. }
  283. }
  284. /**
  285. * @brief LTDC MSP De-Initialization
  286. * This function freeze the hardware resources used in this example
  287. * @param hltdc: LTDC handle pointer
  288. * @retval None
  289. */
  290. void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
  291. {
  292. if(hltdc->Instance==LTDC)
  293. {
  294. /* USER CODE BEGIN LTDC_MspDeInit 0 */
  295. /* USER CODE END LTDC_MspDeInit 0 */
  296. /* Peripheral clock disable */
  297. __HAL_RCC_LTDC_CLK_DISABLE();
  298. /**LTDC GPIO Configuration
  299. PI9 ------> LTDC_VSYNC
  300. PI10 ------> LTDC_HSYNC
  301. PF10 ------> LTDC_DE
  302. PH9 ------> LTDC_R3
  303. PH10 ------> LTDC_R4
  304. PH11 ------> LTDC_R5
  305. PH12 ------> LTDC_R6
  306. PG6 ------> LTDC_R7
  307. PG7 ------> LTDC_CLK
  308. PH13 ------> LTDC_G2
  309. PH14 ------> LTDC_G3
  310. PH15 ------> LTDC_G4
  311. PI0 ------> LTDC_G5
  312. PI1 ------> LTDC_G6
  313. PI2 ------> LTDC_G7
  314. PG11 ------> LTDC_B3
  315. PI4 ------> LTDC_B4
  316. PI5 ------> LTDC_B5
  317. PI6 ------> LTDC_B6
  318. PI7 ------> LTDC_B7
  319. */
  320. HAL_GPIO_DeInit(GPIOI, GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_0|GPIO_PIN_1
  321. |GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
  322. |GPIO_PIN_7);
  323. HAL_GPIO_DeInit(GPIOF, GPIO_PIN_10);
  324. HAL_GPIO_DeInit(GPIOH, GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12
  325. |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
  326. HAL_GPIO_DeInit(GPIOG, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_11);
  327. /* USER CODE BEGIN LTDC_MspDeInit 1 */
  328. /* USER CODE END LTDC_MspDeInit 1 */
  329. }
  330. }
  331. /**
  332. * @brief QSPI MSP Initialization
  333. * This function configures the hardware resources used in this example
  334. * @param hqspi: QSPI handle pointer
  335. * @retval None
  336. */
  337. void HAL_QSPI_MspInit(QSPI_HandleTypeDef* hqspi)
  338. {
  339. GPIO_InitTypeDef GPIO_InitStruct = {0};
  340. if(hqspi->Instance==QUADSPI)
  341. {
  342. /* USER CODE BEGIN QUADSPI_MspInit 0 */
  343. /* USER CODE END QUADSPI_MspInit 0 */
  344. /* Peripheral clock enable */
  345. __HAL_RCC_QSPI_CLK_ENABLE();
  346. __HAL_RCC_GPIOF_CLK_ENABLE();
  347. __HAL_RCC_GPIOB_CLK_ENABLE();
  348. /**QUADSPI GPIO Configuration
  349. PF6 ------> QUADSPI_BK1_IO3
  350. PF7 ------> QUADSPI_BK1_IO2
  351. PF8 ------> QUADSPI_BK1_IO0
  352. PF9 ------> QUADSPI_BK1_IO1
  353. PB2 ------> QUADSPI_CLK
  354. PB6 ------> QUADSPI_BK1_NCS
  355. */
  356. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  357. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  358. GPIO_InitStruct.Pull = GPIO_NOPULL;
  359. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  360. GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI;
  361. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  362. GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
  363. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  364. GPIO_InitStruct.Pull = GPIO_NOPULL;
  365. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  366. GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI;
  367. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  368. GPIO_InitStruct.Pin = GPIO_PIN_2;
  369. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  370. GPIO_InitStruct.Pull = GPIO_NOPULL;
  371. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  372. GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI;
  373. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  374. GPIO_InitStruct.Pin = GPIO_PIN_6;
  375. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  376. GPIO_InitStruct.Pull = GPIO_NOPULL;
  377. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  378. GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI;
  379. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  380. /* USER CODE BEGIN QUADSPI_MspInit 1 */
  381. /* USER CODE END QUADSPI_MspInit 1 */
  382. }
  383. }
  384. /**
  385. * @brief QSPI MSP De-Initialization
  386. * This function freeze the hardware resources used in this example
  387. * @param hqspi: QSPI handle pointer
  388. * @retval None
  389. */
  390. void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef* hqspi)
  391. {
  392. if(hqspi->Instance==QUADSPI)
  393. {
  394. /* USER CODE BEGIN QUADSPI_MspDeInit 0 */
  395. /* USER CODE END QUADSPI_MspDeInit 0 */
  396. /* Peripheral clock disable */
  397. __HAL_RCC_QSPI_CLK_DISABLE();
  398. /**QUADSPI GPIO Configuration
  399. PF6 ------> QUADSPI_BK1_IO3
  400. PF7 ------> QUADSPI_BK1_IO2
  401. PF8 ------> QUADSPI_BK1_IO0
  402. PF9 ------> QUADSPI_BK1_IO1
  403. PB2 ------> QUADSPI_CLK
  404. PB6 ------> QUADSPI_BK1_NCS
  405. */
  406. HAL_GPIO_DeInit(GPIOF, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9);
  407. HAL_GPIO_DeInit(GPIOB, GPIO_PIN_2|GPIO_PIN_6);
  408. /* USER CODE BEGIN QUADSPI_MspDeInit 1 */
  409. /* USER CODE END QUADSPI_MspDeInit 1 */
  410. }
  411. }
  412. /**
  413. * @brief RTC MSP Initialization
  414. * This function configures the hardware resources used in this example
  415. * @param hrtc: RTC handle pointer
  416. * @retval None
  417. */
  418. void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
  419. {
  420. GPIO_InitTypeDef GPIO_InitStruct = {0};
  421. if(hrtc->Instance==RTC)
  422. {
  423. /* USER CODE BEGIN RTC_MspInit 0 */
  424. /* USER CODE END RTC_MspInit 0 */
  425. /* Peripheral clock enable */
  426. __HAL_RCC_RTC_ENABLE();
  427. __HAL_RCC_GPIOC_CLK_ENABLE();
  428. /**RTC GPIO Configuration
  429. PC13 ------> RTC_OUT_CALIB
  430. */
  431. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  432. /* USER CODE BEGIN RTC_MspInit 1 */
  433. /* USER CODE END RTC_MspInit 1 */
  434. }
  435. }
  436. /**
  437. * @brief RTC MSP De-Initialization
  438. * This function freeze the hardware resources used in this example
  439. * @param hrtc: RTC handle pointer
  440. * @retval None
  441. */
  442. void HAL_RTC_MspDeInit(RTC_HandleTypeDef* hrtc)
  443. {
  444. if(hrtc->Instance==RTC)
  445. {
  446. /* USER CODE BEGIN RTC_MspDeInit 0 */
  447. /* USER CODE END RTC_MspDeInit 0 */
  448. /* Peripheral clock disable */
  449. __HAL_RCC_RTC_DISABLE();
  450. /**RTC GPIO Configuration
  451. PC13 ------> RTC_OUT_CALIB
  452. */
  453. HAL_GPIO_DeInit(GPIOC, GPIO_PIN_13);
  454. /* USER CODE BEGIN RTC_MspDeInit 1 */
  455. /* USER CODE END RTC_MspDeInit 1 */
  456. }
  457. }
  458. /**
  459. * @brief SD MSP Initialization
  460. * This function configures the hardware resources used in this example
  461. * @param hsd: SD handle pointer
  462. * @retval None
  463. */
  464. void HAL_SD_MspInit(SD_HandleTypeDef* hsd)
  465. {
  466. GPIO_InitTypeDef GPIO_InitStruct = {0};
  467. if(hsd->Instance==SDMMC1)
  468. {
  469. /* USER CODE BEGIN SDMMC1_MspInit 0 */
  470. /* USER CODE END SDMMC1_MspInit 0 */
  471. /* Peripheral clock enable */
  472. __HAL_RCC_SDMMC1_CLK_ENABLE();
  473. __HAL_RCC_GPIOC_CLK_ENABLE();
  474. __HAL_RCC_GPIOD_CLK_ENABLE();
  475. /**SDMMC1 GPIO Configuration
  476. PC8 ------> SDMMC1_D0
  477. PC9 ------> SDMMC1_D1
  478. PC10 ------> SDMMC1_D2
  479. PC11 ------> SDMMC1_D3
  480. PC12 ------> SDMMC1_CK
  481. PD2 ------> SDMMC1_CMD
  482. */
  483. GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
  484. |GPIO_PIN_12;
  485. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  486. GPIO_InitStruct.Pull = GPIO_NOPULL;
  487. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  488. GPIO_InitStruct.Alternate = GPIO_AF12_SDIO1;
  489. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  490. GPIO_InitStruct.Pin = GPIO_PIN_2;
  491. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  492. GPIO_InitStruct.Pull = GPIO_NOPULL;
  493. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  494. GPIO_InitStruct.Alternate = GPIO_AF12_SDIO1;
  495. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  496. /* SDMMC1 interrupt Init */
  497. HAL_NVIC_SetPriority(SDMMC1_IRQn, 2, 0);
  498. HAL_NVIC_EnableIRQ(SDMMC1_IRQn);
  499. /* USER CODE BEGIN SDMMC1_MspInit 1 */
  500. /* USER CODE END SDMMC1_MspInit 1 */
  501. }
  502. }
  503. /**
  504. * @brief SD MSP De-Initialization
  505. * This function freeze the hardware resources used in this example
  506. * @param hsd: SD handle pointer
  507. * @retval None
  508. */
  509. void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd)
  510. {
  511. if(hsd->Instance==SDMMC1)
  512. {
  513. /* USER CODE BEGIN SDMMC1_MspDeInit 0 */
  514. /* USER CODE END SDMMC1_MspDeInit 0 */
  515. /* Peripheral clock disable */
  516. __HAL_RCC_SDMMC1_CLK_DISABLE();
  517. /**SDMMC1 GPIO Configuration
  518. PC8 ------> SDMMC1_D0
  519. PC9 ------> SDMMC1_D1
  520. PC10 ------> SDMMC1_D2
  521. PC11 ------> SDMMC1_D3
  522. PC12 ------> SDMMC1_CK
  523. PD2 ------> SDMMC1_CMD
  524. */
  525. HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
  526. |GPIO_PIN_12);
  527. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
  528. /* SDMMC1 interrupt DeInit */
  529. HAL_NVIC_DisableIRQ(SDMMC1_IRQn);
  530. /* USER CODE BEGIN SDMMC1_MspDeInit 1 */
  531. /* USER CODE END SDMMC1_MspDeInit 1 */
  532. }
  533. }
  534. /**
  535. * @brief SPI MSP Initialization
  536. * This function configures the hardware resources used in this example
  537. * @param hspi: SPI handle pointer
  538. * @retval None
  539. */
  540. void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
  541. {
  542. GPIO_InitTypeDef GPIO_InitStruct = {0};
  543. if(hspi->Instance==SPI2)
  544. {
  545. /* USER CODE BEGIN SPI2_MspInit 0 */
  546. /* USER CODE END SPI2_MspInit 0 */
  547. /* Peripheral clock enable */
  548. __HAL_RCC_SPI2_CLK_ENABLE();
  549. __HAL_RCC_GPIOB_CLK_ENABLE();
  550. /**SPI2 GPIO Configuration
  551. PB13 ------> SPI2_SCK
  552. PB14 ------> SPI2_MISO
  553. PB15 ------> SPI2_MOSI
  554. */
  555. GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
  556. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  557. GPIO_InitStruct.Pull = GPIO_NOPULL;
  558. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  559. GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
  560. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  561. /* USER CODE BEGIN SPI2_MspInit 1 */
  562. /* USER CODE END SPI2_MspInit 1 */
  563. }
  564. }
  565. /**
  566. * @brief SPI MSP De-Initialization
  567. * This function freeze the hardware resources used in this example
  568. * @param hspi: SPI handle pointer
  569. * @retval None
  570. */
  571. void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
  572. {
  573. if(hspi->Instance==SPI2)
  574. {
  575. /* USER CODE BEGIN SPI2_MspDeInit 0 */
  576. /* USER CODE END SPI2_MspDeInit 0 */
  577. /* Peripheral clock disable */
  578. __HAL_RCC_SPI2_CLK_DISABLE();
  579. /**SPI2 GPIO Configuration
  580. PB13 ------> SPI2_SCK
  581. PB14 ------> SPI2_MISO
  582. PB15 ------> SPI2_MOSI
  583. */
  584. HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
  585. /* USER CODE BEGIN SPI2_MspDeInit 1 */
  586. /* USER CODE END SPI2_MspDeInit 1 */
  587. }
  588. }
  589. /**
  590. * @brief UART MSP Initialization
  591. * This function configures the hardware resources used in this example
  592. * @param huart: UART handle pointer
  593. * @retval None
  594. */
  595. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  596. {
  597. GPIO_InitTypeDef GPIO_InitStruct = {0};
  598. if(huart->Instance==USART1)
  599. {
  600. /* USER CODE BEGIN USART1_MspInit 0 */
  601. /* USER CODE END USART1_MspInit 0 */
  602. /* Peripheral clock enable */
  603. __HAL_RCC_USART1_CLK_ENABLE();
  604. __HAL_RCC_GPIOA_CLK_ENABLE();
  605. /**USART1 GPIO Configuration
  606. PA9 ------> USART1_TX
  607. PA10 ------> USART1_RX
  608. */
  609. GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
  610. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  611. GPIO_InitStruct.Pull = GPIO_PULLUP;
  612. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  613. GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
  614. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  615. /* USART1 interrupt Init */
  616. HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
  617. HAL_NVIC_EnableIRQ(USART1_IRQn);
  618. /* USER CODE BEGIN USART1_MspInit 1 */
  619. /* USER CODE END USART1_MspInit 1 */
  620. }
  621. else if(huart->Instance==USART2)
  622. {
  623. /* USER CODE BEGIN USART2_MspInit 0 */
  624. /* USER CODE END USART2_MspInit 0 */
  625. /* Peripheral clock enable */
  626. __HAL_RCC_USART2_CLK_ENABLE();
  627. __HAL_RCC_GPIOA_CLK_ENABLE();
  628. /**USART2 GPIO Configuration
  629. PA2 ------> USART2_TX
  630. PA3 ------> USART2_RX
  631. */
  632. GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
  633. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  634. GPIO_InitStruct.Pull = GPIO_PULLUP;
  635. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  636. GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
  637. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  638. /* USART2 interrupt Init */
  639. HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
  640. HAL_NVIC_EnableIRQ(USART2_IRQn);
  641. /* USER CODE BEGIN USART2_MspInit 1 */
  642. /* USER CODE END USART2_MspInit 1 */
  643. }
  644. }
  645. /**
  646. * @brief UART MSP De-Initialization
  647. * This function freeze the hardware resources used in this example
  648. * @param huart: UART handle pointer
  649. * @retval None
  650. */
  651. void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
  652. {
  653. if(huart->Instance==USART1)
  654. {
  655. /* USER CODE BEGIN USART1_MspDeInit 0 */
  656. /* USER CODE END USART1_MspDeInit 0 */
  657. /* Peripheral clock disable */
  658. __HAL_RCC_USART1_CLK_DISABLE();
  659. /**USART1 GPIO Configuration
  660. PA9 ------> USART1_TX
  661. PA10 ------> USART1_RX
  662. */
  663. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
  664. /* USART1 interrupt DeInit */
  665. HAL_NVIC_DisableIRQ(USART1_IRQn);
  666. /* USER CODE BEGIN USART1_MspDeInit 1 */
  667. /* USER CODE END USART1_MspDeInit 1 */
  668. }
  669. else if(huart->Instance==USART2)
  670. {
  671. /* USER CODE BEGIN USART2_MspDeInit 0 */
  672. /* USER CODE END USART2_MspDeInit 0 */
  673. /* Peripheral clock disable */
  674. __HAL_RCC_USART2_CLK_DISABLE();
  675. /**USART2 GPIO Configuration
  676. PA2 ------> USART2_TX
  677. PA3 ------> USART2_RX
  678. */
  679. HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
  680. /* USART2 interrupt DeInit */
  681. HAL_NVIC_DisableIRQ(USART2_IRQn);
  682. /* USER CODE BEGIN USART2_MspDeInit 1 */
  683. /* USER CODE END USART2_MspDeInit 1 */
  684. }
  685. }
  686. static uint32_t FMC_Initialized = 0;
  687. static void HAL_FMC_MspInit(void){
  688. /* USER CODE BEGIN FMC_MspInit 0 */
  689. /* USER CODE END FMC_MspInit 0 */
  690. GPIO_InitTypeDef GPIO_InitStruct ={0};
  691. if (FMC_Initialized) {
  692. return;
  693. }
  694. FMC_Initialized = 1;
  695. /* Peripheral clock enable */
  696. __HAL_RCC_FMC_CLK_ENABLE();
  697. /** FMC GPIO Configuration
  698. PF0 ------> FMC_A0
  699. PF1 ------> FMC_A1
  700. PF2 ------> FMC_A2
  701. PF3 ------> FMC_A3
  702. PF4 ------> FMC_A4
  703. PF5 ------> FMC_A5
  704. PC0 ------> FMC_SDNWE
  705. PC2_C ------> FMC_SDNE0
  706. PC3_C ------> FMC_SDCKE0
  707. PF11 ------> FMC_SDNRAS
  708. PF12 ------> FMC_A6
  709. PF13 ------> FMC_A7
  710. PF14 ------> FMC_A8
  711. PF15 ------> FMC_A9
  712. PG0 ------> FMC_A10
  713. PG1 ------> FMC_A11
  714. PE7 ------> FMC_D4
  715. PE8 ------> FMC_D5
  716. PE9 ------> FMC_D6
  717. PE10 ------> FMC_D7
  718. PE11 ------> FMC_D8
  719. PE12 ------> FMC_D9
  720. PE13 ------> FMC_D10
  721. PE14 ------> FMC_D11
  722. PE15 ------> FMC_D12
  723. PD8 ------> FMC_D13
  724. PD9 ------> FMC_D14
  725. PD10 ------> FMC_D15
  726. PD14 ------> FMC_D0
  727. PD15 ------> FMC_D1
  728. PG2 ------> FMC_A12
  729. PG4 ------> FMC_BA0
  730. PG5 ------> FMC_BA1
  731. PG8 ------> FMC_SDCLK
  732. PD0 ------> FMC_D2
  733. PD1 ------> FMC_D3
  734. PG15 ------> FMC_SDNCAS
  735. PE0 ------> FMC_NBL0
  736. PE1 ------> FMC_NBL1
  737. */
  738. GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
  739. |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_11|GPIO_PIN_12
  740. |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
  741. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  742. GPIO_InitStruct.Pull = GPIO_NOPULL;
  743. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  744. GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
  745. HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
  746. GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3;
  747. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  748. GPIO_InitStruct.Pull = GPIO_NOPULL;
  749. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  750. GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
  751. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  752. GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4
  753. |GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_15;
  754. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  755. GPIO_InitStruct.Pull = GPIO_NOPULL;
  756. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  757. GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
  758. HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
  759. GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10
  760. |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
  761. |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
  762. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  763. GPIO_InitStruct.Pull = GPIO_NOPULL;
  764. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  765. GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
  766. HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  767. GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14
  768. |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;
  769. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  770. GPIO_InitStruct.Pull = GPIO_NOPULL;
  771. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  772. GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
  773. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  774. /* USER CODE BEGIN FMC_MspInit 1 */
  775. /* USER CODE END FMC_MspInit 1 */
  776. }
  777. void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* hsdram){
  778. /* USER CODE BEGIN SDRAM_MspInit 0 */
  779. /* USER CODE END SDRAM_MspInit 0 */
  780. HAL_FMC_MspInit();
  781. /* USER CODE BEGIN SDRAM_MspInit 1 */
  782. /* USER CODE END SDRAM_MspInit 1 */
  783. }
  784. static uint32_t FMC_DeInitialized = 0;
  785. static void HAL_FMC_MspDeInit(void){
  786. /* USER CODE BEGIN FMC_MspDeInit 0 */
  787. /* USER CODE END FMC_MspDeInit 0 */
  788. if (FMC_DeInitialized) {
  789. return;
  790. }
  791. FMC_DeInitialized = 1;
  792. /* Peripheral clock enable */
  793. __HAL_RCC_FMC_CLK_DISABLE();
  794. /** FMC GPIO Configuration
  795. PF0 ------> FMC_A0
  796. PF1 ------> FMC_A1
  797. PF2 ------> FMC_A2
  798. PF3 ------> FMC_A3
  799. PF4 ------> FMC_A4
  800. PF5 ------> FMC_A5
  801. PC0 ------> FMC_SDNWE
  802. PC2_C ------> FMC_SDNE0
  803. PC3_C ------> FMC_SDCKE0
  804. PF11 ------> FMC_SDNRAS
  805. PF12 ------> FMC_A6
  806. PF13 ------> FMC_A7
  807. PF14 ------> FMC_A8
  808. PF15 ------> FMC_A9
  809. PG0 ------> FMC_A10
  810. PG1 ------> FMC_A11
  811. PE7 ------> FMC_D4
  812. PE8 ------> FMC_D5
  813. PE9 ------> FMC_D6
  814. PE10 ------> FMC_D7
  815. PE11 ------> FMC_D8
  816. PE12 ------> FMC_D9
  817. PE13 ------> FMC_D10
  818. PE14 ------> FMC_D11
  819. PE15 ------> FMC_D12
  820. PD8 ------> FMC_D13
  821. PD9 ------> FMC_D14
  822. PD10 ------> FMC_D15
  823. PD14 ------> FMC_D0
  824. PD15 ------> FMC_D1
  825. PG2 ------> FMC_A12
  826. PG4 ------> FMC_BA0
  827. PG5 ------> FMC_BA1
  828. PG8 ------> FMC_SDCLK
  829. PD0 ------> FMC_D2
  830. PD1 ------> FMC_D3
  831. PG15 ------> FMC_SDNCAS
  832. PE0 ------> FMC_NBL0
  833. PE1 ------> FMC_NBL1
  834. */
  835. HAL_GPIO_DeInit(GPIOF, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
  836. |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_11|GPIO_PIN_12
  837. |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
  838. HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_3);
  839. HAL_GPIO_DeInit(GPIOG, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4
  840. |GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_15);
  841. HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10
  842. |GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
  843. |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1);
  844. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14
  845. |GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1);
  846. /* USER CODE BEGIN FMC_MspDeInit 1 */
  847. /* USER CODE END FMC_MspDeInit 1 */
  848. }
  849. void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef* hsdram){
  850. /* USER CODE BEGIN SDRAM_MspDeInit 0 */
  851. /* USER CODE END SDRAM_MspDeInit 0 */
  852. HAL_FMC_MspDeInit();
  853. /* USER CODE BEGIN SDRAM_MspDeInit 1 */
  854. /* USER CODE END SDRAM_MspDeInit 1 */
  855. }
  856. /* USER CODE BEGIN 1 */
  857. /* USER CODE END 1 */
  858. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/