stm32f1xx_hal_msp.c 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. /* USER CODE BEGIN Header */
  2. /**
  3. ******************************************************************************
  4. * @file stm32f1xx_hal_msp.c
  5. * @brief This file provides code for the MSP Initialization
  6. * and de-Initialization codes.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
  11. * All rights reserved.</center></h2>
  12. *
  13. * This software component is licensed by ST under Ultimate Liberty license
  14. * SLA0044, the "License"; You may not use this file except in compliance with
  15. * the License. You may obtain a copy of the License at:
  16. * www.st.com/SLA0044
  17. *
  18. ******************************************************************************
  19. */
  20. /* USER CODE END Header */
  21. /* Includes ------------------------------------------------------------------*/
  22. #include "main.h"
  23. /* USER CODE BEGIN Includes */
  24. /* USER CODE END Includes */
  25. extern DMA_HandleTypeDef hdma_adc1;
  26. extern DMA_HandleTypeDef hdma_tim1_up;
  27. /* Private typedef -----------------------------------------------------------*/
  28. /* USER CODE BEGIN TD */
  29. /* USER CODE END TD */
  30. /* Private define ------------------------------------------------------------*/
  31. /* USER CODE BEGIN Define */
  32. /* USER CODE END Define */
  33. /* Private macro -------------------------------------------------------------*/
  34. /* USER CODE BEGIN Macro */
  35. /* USER CODE END Macro */
  36. /* Private variables ---------------------------------------------------------*/
  37. /* USER CODE BEGIN PV */
  38. /* USER CODE END PV */
  39. /* Private function prototypes -----------------------------------------------*/
  40. /* USER CODE BEGIN PFP */
  41. /* USER CODE END PFP */
  42. /* External functions --------------------------------------------------------*/
  43. /* USER CODE BEGIN ExternalFunctions */
  44. /* USER CODE END ExternalFunctions */
  45. /* USER CODE BEGIN 0 */
  46. /* USER CODE END 0 */
  47. void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
  48. /**
  49. * Initializes the Global MSP.
  50. */
  51. void HAL_MspInit(void)
  52. {
  53. /* USER CODE BEGIN MspInit 0 */
  54. /* USER CODE END MspInit 0 */
  55. __HAL_RCC_AFIO_CLK_ENABLE();
  56. __HAL_RCC_PWR_CLK_ENABLE();
  57. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_3);
  58. /* System interrupt init*/
  59. /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
  60. */
  61. __HAL_AFIO_REMAP_SWJ_NOJTAG();
  62. /* USER CODE BEGIN MspInit 1 */
  63. /* USER CODE END MspInit 1 */
  64. }
  65. /**
  66. * @brief ADC MSP Initialization
  67. * This function configures the hardware resources used in this example
  68. * @param hadc: ADC handle pointer
  69. * @retval None
  70. */
  71. void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
  72. {
  73. GPIO_InitTypeDef GPIO_InitStruct = {0};
  74. if(hadc->Instance==ADC1)
  75. {
  76. /* USER CODE BEGIN ADC1_MspInit 0 */
  77. /* USER CODE END ADC1_MspInit 0 */
  78. /* Peripheral clock enable */
  79. __HAL_RCC_ADC1_CLK_ENABLE();
  80. __HAL_RCC_GPIOA_CLK_ENABLE();
  81. /**ADC1 GPIO Configuration
  82. PA3 ------> ADC1_IN3
  83. PA5 ------> ADC1_IN5
  84. PA6 ------> ADC1_IN6
  85. PA7 ------> ADC1_IN7
  86. */
  87. GPIO_InitStruct.Pin = M1_BUS_VOLTAGE_Pin|M1_CURR_AMPL_U_Pin|M1_CURR_AMPL_V_Pin|M1_CURR_AMPL_W_Pin;
  88. GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  89. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  90. /* ADC1 DMA Init */
  91. /* ADC1 Init */
  92. hdma_adc1.Instance = DMA1_Channel1;
  93. hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
  94. hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
  95. hdma_adc1.Init.MemInc = DMA_MINC_DISABLE;
  96. hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
  97. hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
  98. hdma_adc1.Init.Mode = DMA_CIRCULAR;
  99. hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
  100. if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
  101. {
  102. Error_Handler();
  103. }
  104. __HAL_LINKDMA(hadc,DMA_Handle,hdma_adc1);
  105. /* USER CODE BEGIN ADC1_MspInit 1 */
  106. /* USER CODE END ADC1_MspInit 1 */
  107. }
  108. else if(hadc->Instance==ADC2)
  109. {
  110. /* USER CODE BEGIN ADC2_MspInit 0 */
  111. /* USER CODE END ADC2_MspInit 0 */
  112. /* Peripheral clock enable */
  113. __HAL_RCC_ADC2_CLK_ENABLE();
  114. __HAL_RCC_GPIOA_CLK_ENABLE();
  115. /**ADC2 GPIO Configuration
  116. PA5 ------> ADC2_IN5
  117. PA6 ------> ADC2_IN6
  118. PA7 ------> ADC2_IN7
  119. */
  120. GPIO_InitStruct.Pin = M1_CURR_AMPL_U_Pin|M1_CURR_AMPL_V_Pin|M1_CURR_AMPL_W_Pin;
  121. GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  122. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  123. /* USER CODE BEGIN ADC2_MspInit 1 */
  124. /* USER CODE END ADC2_MspInit 1 */
  125. }
  126. }
  127. /**
  128. * @brief ADC MSP De-Initialization
  129. * This function freeze the hardware resources used in this example
  130. * @param hadc: ADC handle pointer
  131. * @retval None
  132. */
  133. void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
  134. {
  135. if(hadc->Instance==ADC1)
  136. {
  137. /* USER CODE BEGIN ADC1_MspDeInit 0 */
  138. /* USER CODE END ADC1_MspDeInit 0 */
  139. /* Peripheral clock disable */
  140. __HAL_RCC_ADC1_CLK_DISABLE();
  141. /**ADC1 GPIO Configuration
  142. PA3 ------> ADC1_IN3
  143. PA5 ------> ADC1_IN5
  144. PA6 ------> ADC1_IN6
  145. PA7 ------> ADC1_IN7
  146. */
  147. HAL_GPIO_DeInit(GPIOA, M1_BUS_VOLTAGE_Pin|M1_CURR_AMPL_U_Pin|M1_CURR_AMPL_V_Pin|M1_CURR_AMPL_W_Pin);
  148. /* ADC1 DMA DeInit */
  149. HAL_DMA_DeInit(hadc->DMA_Handle);
  150. /* ADC1 interrupt DeInit */
  151. /* USER CODE BEGIN ADC1:ADC1_2_IRQn disable */
  152. /**
  153. * Uncomment the line below to disable the "ADC1_2_IRQn" interrupt
  154. * Be aware, disabling shared interrupt may affect other IPs
  155. */
  156. /* HAL_NVIC_DisableIRQ(ADC1_2_IRQn); */
  157. /* USER CODE END ADC1:ADC1_2_IRQn disable */
  158. /* USER CODE BEGIN ADC1_MspDeInit 1 */
  159. /* USER CODE END ADC1_MspDeInit 1 */
  160. }
  161. else if(hadc->Instance==ADC2)
  162. {
  163. /* USER CODE BEGIN ADC2_MspDeInit 0 */
  164. /* USER CODE END ADC2_MspDeInit 0 */
  165. /* Peripheral clock disable */
  166. __HAL_RCC_ADC2_CLK_DISABLE();
  167. /**ADC2 GPIO Configuration
  168. PA5 ------> ADC2_IN5
  169. PA6 ------> ADC2_IN6
  170. PA7 ------> ADC2_IN7
  171. */
  172. HAL_GPIO_DeInit(GPIOA, M1_CURR_AMPL_U_Pin|M1_CURR_AMPL_V_Pin|M1_CURR_AMPL_W_Pin);
  173. /* ADC2 interrupt DeInit */
  174. /* USER CODE BEGIN ADC2:ADC1_2_IRQn disable */
  175. /**
  176. * Uncomment the line below to disable the "ADC1_2_IRQn" interrupt
  177. * Be aware, disabling shared interrupt may affect other IPs
  178. */
  179. /* HAL_NVIC_DisableIRQ(ADC1_2_IRQn); */
  180. /* USER CODE END ADC2:ADC1_2_IRQn disable */
  181. /* USER CODE BEGIN ADC2_MspDeInit 1 */
  182. /* USER CODE END ADC2_MspDeInit 1 */
  183. }
  184. }
  185. /**
  186. * @brief TIM_Base MSP Initialization
  187. * This function configures the hardware resources used in this example
  188. * @param htim_base: TIM_Base handle pointer
  189. * @retval None
  190. */
  191. void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
  192. {
  193. GPIO_InitTypeDef GPIO_InitStruct = {0};
  194. if(htim_base->Instance==TIM1)
  195. {
  196. /* USER CODE BEGIN TIM1_MspInit 0 */
  197. /* USER CODE END TIM1_MspInit 0 */
  198. /* Peripheral clock enable */
  199. __HAL_RCC_TIM1_CLK_ENABLE();
  200. __HAL_RCC_GPIOB_CLK_ENABLE();
  201. /**TIM1 GPIO Configuration
  202. PB12 ------> TIM1_BKIN
  203. */
  204. GPIO_InitStruct.Pin = M1_OCP_Pin;
  205. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  206. GPIO_InitStruct.Pull = GPIO_PULLUP;
  207. HAL_GPIO_Init(M1_OCP_GPIO_Port, &GPIO_InitStruct);
  208. /* TIM1 DMA Init */
  209. /* TIM1_UP Init */
  210. hdma_tim1_up.Instance = DMA1_Channel5;
  211. hdma_tim1_up.Init.Direction = DMA_MEMORY_TO_PERIPH;
  212. hdma_tim1_up.Init.PeriphInc = DMA_PINC_DISABLE;
  213. hdma_tim1_up.Init.MemInc = DMA_MINC_DISABLE;
  214. hdma_tim1_up.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
  215. hdma_tim1_up.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
  216. hdma_tim1_up.Init.Mode = DMA_CIRCULAR;
  217. hdma_tim1_up.Init.Priority = DMA_PRIORITY_LOW;
  218. if (HAL_DMA_Init(&hdma_tim1_up) != HAL_OK)
  219. {
  220. Error_Handler();
  221. }
  222. __HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_UPDATE],hdma_tim1_up);
  223. /* USER CODE BEGIN TIM1_MspInit 1 */
  224. /* USER CODE END TIM1_MspInit 1 */
  225. }
  226. else if(htim_base->Instance==TIM2)
  227. {
  228. /* USER CODE BEGIN TIM2_MspInit 0 */
  229. /* USER CODE END TIM2_MspInit 0 */
  230. /* Peripheral clock enable */
  231. __HAL_RCC_TIM2_CLK_ENABLE();
  232. __HAL_RCC_GPIOA_CLK_ENABLE();
  233. /**TIM2 GPIO Configuration
  234. PA0-WKUP ------> TIM2_CH1
  235. PA1 ------> TIM2_CH2
  236. PA2 ------> TIM2_CH3
  237. */
  238. GPIO_InitStruct.Pin = M1_HALL_H1_Pin|M1_HALL_H2_Pin|M1_HALL_H3_Pin;
  239. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  240. GPIO_InitStruct.Pull = GPIO_NOPULL;
  241. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  242. /* USER CODE BEGIN TIM2_MspInit 1 */
  243. /* USER CODE END TIM2_MspInit 1 */
  244. }
  245. }
  246. void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
  247. {
  248. GPIO_InitTypeDef GPIO_InitStruct = {0};
  249. if(htim->Instance==TIM1)
  250. {
  251. /* USER CODE BEGIN TIM1_MspPostInit 0 */
  252. /* USER CODE END TIM1_MspPostInit 0 */
  253. __HAL_RCC_GPIOB_CLK_ENABLE();
  254. __HAL_RCC_GPIOA_CLK_ENABLE();
  255. /**TIM1 GPIO Configuration
  256. PB13 ------> TIM1_CH1N
  257. PB14 ------> TIM1_CH2N
  258. PB15 ------> TIM1_CH3N
  259. PA8 ------> TIM1_CH1
  260. PA9 ------> TIM1_CH2
  261. PA10 ------> TIM1_CH3
  262. */
  263. GPIO_InitStruct.Pin = M1_PWM_UL_Pin|M1_PWM_VL_Pin|M1_PWM_WL_Pin;
  264. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  265. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  266. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  267. GPIO_InitStruct.Pin = M1_PWM_UH_Pin|M1_PWM_VH_Pin|M1_PWM_WH_Pin;
  268. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  269. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  270. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  271. /* USER CODE BEGIN TIM1_MspPostInit 1 */
  272. /* USER CODE END TIM1_MspPostInit 1 */
  273. }
  274. }
  275. /**
  276. * @brief TIM_Base MSP De-Initialization
  277. * This function freeze the hardware resources used in this example
  278. * @param htim_base: TIM_Base handle pointer
  279. * @retval None
  280. */
  281. void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
  282. {
  283. if(htim_base->Instance==TIM1)
  284. {
  285. /* USER CODE BEGIN TIM1_MspDeInit 0 */
  286. /* USER CODE END TIM1_MspDeInit 0 */
  287. /* Peripheral clock disable */
  288. __HAL_RCC_TIM1_CLK_DISABLE();
  289. /**TIM1 GPIO Configuration
  290. PB12 ------> TIM1_BKIN
  291. PB13 ------> TIM1_CH1N
  292. PB14 ------> TIM1_CH2N
  293. PB15 ------> TIM1_CH3N
  294. PA8 ------> TIM1_CH1
  295. PA9 ------> TIM1_CH2
  296. PA10 ------> TIM1_CH3
  297. */
  298. HAL_GPIO_DeInit(GPIOB, M1_OCP_Pin|M1_PWM_UL_Pin|M1_PWM_VL_Pin|M1_PWM_WL_Pin);
  299. HAL_GPIO_DeInit(GPIOA, M1_PWM_UH_Pin|M1_PWM_VH_Pin|M1_PWM_WH_Pin);
  300. /* TIM1 DMA DeInit */
  301. HAL_DMA_DeInit(htim_base->hdma[TIM_DMA_ID_UPDATE]);
  302. /* TIM1 interrupt DeInit */
  303. HAL_NVIC_DisableIRQ(TIM1_BRK_IRQn);
  304. HAL_NVIC_DisableIRQ(TIM1_UP_IRQn);
  305. /* USER CODE BEGIN TIM1_MspDeInit 1 */
  306. /* USER CODE END TIM1_MspDeInit 1 */
  307. }
  308. else if(htim_base->Instance==TIM2)
  309. {
  310. /* USER CODE BEGIN TIM2_MspDeInit 0 */
  311. /* USER CODE END TIM2_MspDeInit 0 */
  312. /* Peripheral clock disable */
  313. __HAL_RCC_TIM2_CLK_DISABLE();
  314. /**TIM2 GPIO Configuration
  315. PA0-WKUP ------> TIM2_CH1
  316. PA1 ------> TIM2_CH2
  317. PA2 ------> TIM2_CH3
  318. */
  319. HAL_GPIO_DeInit(GPIOA, M1_HALL_H1_Pin|M1_HALL_H2_Pin|M1_HALL_H3_Pin);
  320. /* TIM2 interrupt DeInit */
  321. HAL_NVIC_DisableIRQ(TIM2_IRQn);
  322. /* USER CODE BEGIN TIM2_MspDeInit 1 */
  323. /* USER CODE END TIM2_MspDeInit 1 */
  324. }
  325. }
  326. /**
  327. * @brief UART MSP Initialization
  328. * This function configures the hardware resources used in this example
  329. * @param huart: UART handle pointer
  330. * @retval None
  331. */
  332. void HAL_UART_MspInit(UART_HandleTypeDef* huart)
  333. {
  334. GPIO_InitTypeDef GPIO_InitStruct = {0};
  335. if(huart->Instance==USART1)
  336. {
  337. /* USER CODE BEGIN USART1_MspInit 0 */
  338. /* USER CODE END USART1_MspInit 0 */
  339. /* Peripheral clock enable */
  340. __HAL_RCC_USART1_CLK_ENABLE();
  341. __HAL_RCC_GPIOB_CLK_ENABLE();
  342. /**USART1 GPIO Configuration
  343. PB6 ------> USART1_TX
  344. PB7 ------> USART1_RX
  345. */
  346. GPIO_InitStruct.Pin = UART_TX_Pin;
  347. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  348. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  349. HAL_GPIO_Init(UART_TX_GPIO_Port, &GPIO_InitStruct);
  350. GPIO_InitStruct.Pin = UART_RX_Pin;
  351. GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  352. GPIO_InitStruct.Pull = GPIO_NOPULL;
  353. HAL_GPIO_Init(UART_RX_GPIO_Port, &GPIO_InitStruct);
  354. __HAL_AFIO_REMAP_USART1_ENABLE();
  355. /* USER CODE BEGIN USART1_MspInit 1 */
  356. /* USER CODE END USART1_MspInit 1 */
  357. }
  358. }
  359. /**
  360. * @brief UART MSP De-Initialization
  361. * This function freeze the hardware resources used in this example
  362. * @param huart: UART handle pointer
  363. * @retval None
  364. */
  365. void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
  366. {
  367. if(huart->Instance==USART1)
  368. {
  369. /* USER CODE BEGIN USART1_MspDeInit 0 */
  370. /* USER CODE END USART1_MspDeInit 0 */
  371. /* Peripheral clock disable */
  372. __HAL_RCC_USART1_CLK_DISABLE();
  373. /**USART1 GPIO Configuration
  374. PB6 ------> USART1_TX
  375. PB7 ------> USART1_RX
  376. */
  377. HAL_GPIO_DeInit(GPIOB, UART_TX_Pin|UART_RX_Pin);
  378. /* USART1 interrupt DeInit */
  379. HAL_NVIC_DisableIRQ(USART1_IRQn);
  380. /* USER CODE BEGIN USART1_MspDeInit 1 */
  381. /* USER CODE END USART1_MspDeInit 1 */
  382. }
  383. }
  384. /* USER CODE BEGIN 1 */
  385. /* USER CODE END 1 */
  386. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/