usart.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. /**
  2. ******************************************************************************
  3. * File Name : USART.c
  4. * Description : This file provides code for the configuration
  5. * of the USART instances.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under Ultimate Liberty license
  13. * SLA0044, the "License"; You may not use this file except in compliance with
  14. * the License. You may obtain a copy of the License at:
  15. * www.st.com/SLA0044
  16. *
  17. ******************************************************************************
  18. */
  19. /* Includes ------------------------------------------------------------------*/
  20. #include "usart.h"
  21. /* USER CODE BEGIN 0 */
  22. #ifdef __GNUC__
  23. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
  24. #else
  25. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
  26. #endif
  27. PUTCHAR_PROTOTYPE
  28. {
  29. HAL_UART_Transmit(&DEBUG_USART , (uint8_t *)&ch, 1, 0xFFFF);
  30. return ch;
  31. }
  32. char *BLE_CMD[] = { "AT+UFACTORY\r\n",
  33. "AT&D2\r\n",
  34. "AT&S2\r\n",
  35. "AT+UBTPM=1\r\n",
  36. "AT+UBTSM=2\r\n",
  37. "AT+UBTST=1\r\n",
  38. "AT+UBTDM=3\r\n",
  39. "AT+UBTCM=2\r\n",
  40. "AT+UBTLE=2\r\n",
  41. "ATO1\r\n",
  42. "AT+UBTLN=",
  43. "AT+UBTCFG=4,8\r\n",
  44. "AT+UBTLECFG=4,6\r\n",
  45. "AT+UBTLECFG=6,6\r\n",
  46. "AT+UBTLECFG=27,2\r\n",
  47. "AT+UBTLECFG=28,2\r\n",
  48. "AT+UDCPC=1\r\n",
  49. "AT+UMLA=1\r\n"};
  50. char *WIFI_CMD[] = {"AT+UFACTORY\r\n",
  51. "AT&D2\r\n",
  52. "AT&S2\r\n",
  53. "AT+UMLA=4\r\n",
  54. "AT+UWAPC=0,2,\r\n",
  55. "AT+UWAPC=0,4,1\r\n",
  56. "AT+UWAPC=0,5,2,2\r\n",
  57. "AT+UWAPC=0,8,\r\n",
  58. "AT+UWAPC=0,106,1\r\n",
  59. "AT+UDSC=1,1,8787\r\n",
  60. "AT+UWAPCA=0,3\r\n",
  61. "ATO1\r\n"};
  62. uint8_t UART_RFID_rx_buffer[UART_BUFFER_SIZE>>4];
  63. uint8_t UART_RFID_recv_end_flag;
  64. uint16_t UART_RFID_rx_len;
  65. #ifdef FUNC_RS485_SLAVE
  66. //huart2
  67. uint8_t UART_RS485_rx_buffer[UART_BUFFER_SIZE];
  68. uint8_t UART_RS485_recv_end_flag;
  69. uint16_t UART_RS485_rx_len;
  70. #endif
  71. //huart3
  72. uint8_t UART_IAP_rx_buffer[UART_BUFFER_SIZE];
  73. uint8_t UART_IAP_recv_end_flag;
  74. uint16_t UART_IAP_rx_len;
  75. uint8_t isUSB_CDC_IAP;
  76. uint8_t UART_BLE_rx_buffer[UART_BUFFER_SIZE];
  77. uint8_t UART_BLE_recv_end_flag;
  78. uint16_t UART_BLE_rx_len;
  79. uint32_t UART_BLE_Receive_Tick;
  80. uint8_t UART_BLE_Init_OK;
  81. uint8_t UART_WIFI_rx_buffer[UART_BUFFER_SIZE];
  82. uint8_t UART_WIFI_recv_end_flag;
  83. uint16_t UART_WIFI_rx_len;
  84. uint32_t UART_WIFI_Receive_Tick;
  85. uint8_t UART_WIFI_Init_OK;
  86. /* USER CODE END 0 */
  87. UART_HandleTypeDef huart5;
  88. UART_HandleTypeDef huart1;
  89. UART_HandleTypeDef huart2;
  90. UART_HandleTypeDef huart3;
  91. UART_HandleTypeDef huart6;
  92. DMA_HandleTypeDef hdma_uart5_rx;
  93. DMA_HandleTypeDef hdma_usart1_rx;
  94. DMA_HandleTypeDef hdma_usart2_rx;
  95. DMA_HandleTypeDef hdma_usart3_rx;
  96. DMA_HandleTypeDef hdma_usart6_rx;
  97. /* UART5 init function */
  98. void MX_UART5_Init(void)
  99. {
  100. huart5.Instance = UART5;
  101. huart5.Init.BaudRate = 115200;
  102. huart5.Init.WordLength = UART_WORDLENGTH_8B;
  103. huart5.Init.StopBits = UART_STOPBITS_1;
  104. huart5.Init.Parity = UART_PARITY_NONE;
  105. huart5.Init.Mode = UART_MODE_TX_RX;
  106. huart5.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  107. huart5.Init.OverSampling = UART_OVERSAMPLING_16;
  108. if (HAL_UART_Init(&huart5) != HAL_OK)
  109. {
  110. Error_Handler();
  111. }
  112. }
  113. /* USART1 init function */
  114. void MX_USART1_UART_Init(void)
  115. {
  116. huart1.Instance = USART1;
  117. huart1.Init.BaudRate = 19200;
  118. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  119. huart1.Init.StopBits = UART_STOPBITS_1;
  120. huart1.Init.Parity = UART_PARITY_NONE;
  121. huart1.Init.Mode = UART_MODE_TX_RX;
  122. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  123. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  124. if (HAL_UART_Init(&huart1) != HAL_OK)
  125. {
  126. Error_Handler();
  127. }
  128. }
  129. /* USART2 init function */
  130. void MX_USART2_UART_Init(void)
  131. {
  132. huart2.Instance = USART2;
  133. huart2.Init.BaudRate = 115200;
  134. huart2.Init.WordLength = UART_WORDLENGTH_8B;
  135. huart2.Init.StopBits = UART_STOPBITS_1;
  136. huart2.Init.Parity = UART_PARITY_NONE;
  137. huart2.Init.Mode = UART_MODE_TX_RX;
  138. huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  139. huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  140. if (HAL_UART_Init(&huart2) != HAL_OK)
  141. {
  142. Error_Handler();
  143. }
  144. }
  145. /* USART3 init function */
  146. void MX_USART3_UART_Init(void)
  147. {
  148. huart3.Instance = USART3;
  149. huart3.Init.BaudRate = 115200;
  150. huart3.Init.WordLength = UART_WORDLENGTH_8B;
  151. huart3.Init.StopBits = UART_STOPBITS_1;
  152. huart3.Init.Parity = UART_PARITY_NONE;
  153. huart3.Init.Mode = UART_MODE_TX_RX;
  154. huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  155. huart3.Init.OverSampling = UART_OVERSAMPLING_16;
  156. if (HAL_UART_Init(&huart3) != HAL_OK)
  157. {
  158. Error_Handler();
  159. }
  160. }
  161. /* USART6 init function */
  162. void MX_USART6_UART_Init(void)
  163. {
  164. huart6.Instance = USART6;
  165. huart6.Init.BaudRate = 115200;
  166. huart6.Init.WordLength = UART_WORDLENGTH_8B;
  167. huart6.Init.StopBits = UART_STOPBITS_1;
  168. huart6.Init.Parity = UART_PARITY_NONE;
  169. huart6.Init.Mode = UART_MODE_TX_RX;
  170. huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  171. huart6.Init.OverSampling = UART_OVERSAMPLING_16;
  172. if (HAL_UART_Init(&huart6) != HAL_OK)
  173. {
  174. Error_Handler();
  175. }
  176. }
  177. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
  178. {
  179. GPIO_InitTypeDef GPIO_InitStruct = {0};
  180. if(uartHandle->Instance==UART5)
  181. {
  182. /* USER CODE BEGIN UART5_MspInit 0 */
  183. /* USER CODE END UART5_MspInit 0 */
  184. /* UART5 clock enable */
  185. __HAL_RCC_UART5_CLK_ENABLE();
  186. __HAL_RCC_GPIOC_CLK_ENABLE();
  187. __HAL_RCC_GPIOD_CLK_ENABLE();
  188. /**UART5 GPIO Configuration
  189. PC12 ------> UART5_TX
  190. PD2 ------> UART5_RX
  191. */
  192. GPIO_InitStruct.Pin = GPIO_PIN_12;
  193. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  194. GPIO_InitStruct.Pull = GPIO_PULLUP;
  195. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  196. GPIO_InitStruct.Alternate = GPIO_AF8_UART5;
  197. HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  198. GPIO_InitStruct.Pin = GPIO_PIN_2;
  199. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  200. GPIO_InitStruct.Pull = GPIO_PULLUP;
  201. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  202. GPIO_InitStruct.Alternate = GPIO_AF8_UART5;
  203. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  204. /* UART5 DMA Init */
  205. /* UART5_RX Init */
  206. hdma_uart5_rx.Instance = DMA1_Stream0;
  207. hdma_uart5_rx.Init.Channel = DMA_CHANNEL_4;
  208. hdma_uart5_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  209. hdma_uart5_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  210. hdma_uart5_rx.Init.MemInc = DMA_MINC_ENABLE;
  211. hdma_uart5_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  212. hdma_uart5_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  213. hdma_uart5_rx.Init.Mode = DMA_CIRCULAR;
  214. hdma_uart5_rx.Init.Priority = DMA_PRIORITY_LOW;
  215. hdma_uart5_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  216. if (HAL_DMA_Init(&hdma_uart5_rx) != HAL_OK)
  217. {
  218. Error_Handler();
  219. }
  220. __HAL_LINKDMA(uartHandle,hdmarx,hdma_uart5_rx);
  221. /* UART5 interrupt Init */
  222. HAL_NVIC_SetPriority(UART5_IRQn, 5, 0);
  223. HAL_NVIC_EnableIRQ(UART5_IRQn);
  224. /* USER CODE BEGIN UART5_MspInit 1 */
  225. /* USER CODE END UART5_MspInit 1 */
  226. }
  227. else if(uartHandle->Instance==USART1)
  228. {
  229. /* USER CODE BEGIN USART1_MspInit 0 */
  230. /* USER CODE END USART1_MspInit 0 */
  231. /* USART1 clock enable */
  232. __HAL_RCC_USART1_CLK_ENABLE();
  233. __HAL_RCC_GPIOB_CLK_ENABLE();
  234. /**USART1 GPIO Configuration
  235. PB6 ------> USART1_TX
  236. PB7 ------> USART1_RX
  237. */
  238. GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
  239. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  240. GPIO_InitStruct.Pull = GPIO_PULLUP;
  241. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  242. GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
  243. HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  244. /* USART1 DMA Init */
  245. /* USART1_RX Init */
  246. hdma_usart1_rx.Instance = DMA2_Stream5;
  247. hdma_usart1_rx.Init.Channel = DMA_CHANNEL_4;
  248. hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  249. hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  250. hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE;
  251. hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  252. hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  253. hdma_usart1_rx.Init.Mode = DMA_CIRCULAR;
  254. hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW;
  255. hdma_usart1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  256. if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK)
  257. {
  258. Error_Handler();
  259. }
  260. __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart1_rx);
  261. /* USART1 interrupt Init */
  262. HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
  263. HAL_NVIC_EnableIRQ(USART1_IRQn);
  264. /* USER CODE BEGIN USART1_MspInit 1 */
  265. /* USER CODE END USART1_MspInit 1 */
  266. }
  267. else if(uartHandle->Instance==USART2)
  268. {
  269. /* USER CODE BEGIN USART2_MspInit 0 */
  270. /* USER CODE END USART2_MspInit 0 */
  271. /* USART2 clock enable */
  272. __HAL_RCC_USART2_CLK_ENABLE();
  273. __HAL_RCC_GPIOD_CLK_ENABLE();
  274. /**USART2 GPIO Configuration
  275. PD5 ------> USART2_TX
  276. PD6 ------> USART2_RX
  277. */
  278. GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;
  279. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  280. GPIO_InitStruct.Pull = GPIO_PULLUP;
  281. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  282. GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
  283. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  284. /* USART2 DMA Init */
  285. /* USART2_RX Init */
  286. hdma_usart2_rx.Instance = DMA1_Stream5;
  287. hdma_usart2_rx.Init.Channel = DMA_CHANNEL_4;
  288. hdma_usart2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  289. hdma_usart2_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  290. hdma_usart2_rx.Init.MemInc = DMA_MINC_ENABLE;
  291. hdma_usart2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  292. hdma_usart2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  293. hdma_usart2_rx.Init.Mode = DMA_CIRCULAR;
  294. hdma_usart2_rx.Init.Priority = DMA_PRIORITY_LOW;
  295. hdma_usart2_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  296. if (HAL_DMA_Init(&hdma_usart2_rx) != HAL_OK)
  297. {
  298. Error_Handler();
  299. }
  300. __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart2_rx);
  301. /* USART2 interrupt Init */
  302. HAL_NVIC_SetPriority(USART2_IRQn, 5, 0);
  303. HAL_NVIC_EnableIRQ(USART2_IRQn);
  304. /* USER CODE BEGIN USART2_MspInit 1 */
  305. /* USER CODE END USART2_MspInit 1 */
  306. }
  307. else if(uartHandle->Instance==USART3)
  308. {
  309. /* USER CODE BEGIN USART3_MspInit 0 */
  310. /* USER CODE END USART3_MspInit 0 */
  311. /* USART3 clock enable */
  312. __HAL_RCC_USART3_CLK_ENABLE();
  313. __HAL_RCC_GPIOD_CLK_ENABLE();
  314. /**USART3 GPIO Configuration
  315. PD8 ------> USART3_TX
  316. PD9 ------> USART3_RX
  317. */
  318. GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
  319. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  320. GPIO_InitStruct.Pull = GPIO_PULLUP;
  321. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  322. GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
  323. HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  324. /* USART3 DMA Init */
  325. /* USART3_RX Init */
  326. hdma_usart3_rx.Instance = DMA1_Stream1;
  327. hdma_usart3_rx.Init.Channel = DMA_CHANNEL_4;
  328. hdma_usart3_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  329. hdma_usart3_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  330. hdma_usart3_rx.Init.MemInc = DMA_MINC_ENABLE;
  331. hdma_usart3_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  332. hdma_usart3_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  333. hdma_usart3_rx.Init.Mode = DMA_CIRCULAR;
  334. hdma_usart3_rx.Init.Priority = DMA_PRIORITY_LOW;
  335. hdma_usart3_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  336. if (HAL_DMA_Init(&hdma_usart3_rx) != HAL_OK)
  337. {
  338. Error_Handler();
  339. }
  340. __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart3_rx);
  341. /* USART3 interrupt Init */
  342. HAL_NVIC_SetPriority(USART3_IRQn, 5, 0);
  343. HAL_NVIC_EnableIRQ(USART3_IRQn);
  344. /* USER CODE BEGIN USART3_MspInit 1 */
  345. /* USER CODE END USART3_MspInit 1 */
  346. }
  347. else if(uartHandle->Instance==USART6)
  348. {
  349. /* USER CODE BEGIN USART6_MspInit 0 */
  350. /* USER CODE END USART6_MspInit 0 */
  351. /* USART6 clock enable */
  352. __HAL_RCC_USART6_CLK_ENABLE();
  353. __HAL_RCC_GPIOG_CLK_ENABLE();
  354. /**USART6 GPIO Configuration
  355. PG9 ------> USART6_RX
  356. PG14 ------> USART6_TX
  357. */
  358. GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_14;
  359. GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  360. GPIO_InitStruct.Pull = GPIO_PULLUP;
  361. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  362. GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
  363. HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
  364. /* USART6 DMA Init */
  365. /* USART6_RX Init */
  366. hdma_usart6_rx.Instance = DMA2_Stream2;
  367. hdma_usart6_rx.Init.Channel = DMA_CHANNEL_5;
  368. hdma_usart6_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  369. hdma_usart6_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  370. hdma_usart6_rx.Init.MemInc = DMA_MINC_ENABLE;
  371. hdma_usart6_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  372. hdma_usart6_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  373. hdma_usart6_rx.Init.Mode = DMA_CIRCULAR;
  374. hdma_usart6_rx.Init.Priority = DMA_PRIORITY_LOW;
  375. hdma_usart6_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  376. if (HAL_DMA_Init(&hdma_usart6_rx) != HAL_OK)
  377. {
  378. Error_Handler();
  379. }
  380. __HAL_LINKDMA(uartHandle,hdmarx,hdma_usart6_rx);
  381. /* USART6 interrupt Init */
  382. HAL_NVIC_SetPriority(USART6_IRQn, 5, 0);
  383. HAL_NVIC_EnableIRQ(USART6_IRQn);
  384. /* USER CODE BEGIN USART6_MspInit 1 */
  385. /* USER CODE END USART6_MspInit 1 */
  386. }
  387. }
  388. void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
  389. {
  390. if(uartHandle->Instance==UART5)
  391. {
  392. /* USER CODE BEGIN UART5_MspDeInit 0 */
  393. /* USER CODE END UART5_MspDeInit 0 */
  394. /* Peripheral clock disable */
  395. __HAL_RCC_UART5_CLK_DISABLE();
  396. /**UART5 GPIO Configuration
  397. PC12 ------> UART5_TX
  398. PD2 ------> UART5_RX
  399. */
  400. HAL_GPIO_DeInit(GPIOC, GPIO_PIN_12);
  401. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
  402. /* UART5 DMA DeInit */
  403. HAL_DMA_DeInit(uartHandle->hdmarx);
  404. /* UART5 interrupt Deinit */
  405. HAL_NVIC_DisableIRQ(UART5_IRQn);
  406. /* USER CODE BEGIN UART5_MspDeInit 1 */
  407. /* USER CODE END UART5_MspDeInit 1 */
  408. }
  409. else if(uartHandle->Instance==USART1)
  410. {
  411. /* USER CODE BEGIN USART1_MspDeInit 0 */
  412. /* USER CODE END USART1_MspDeInit 0 */
  413. /* Peripheral clock disable */
  414. __HAL_RCC_USART1_CLK_DISABLE();
  415. /**USART1 GPIO Configuration
  416. PB6 ------> USART1_TX
  417. PB7 ------> USART1_RX
  418. */
  419. HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
  420. /* USART1 DMA DeInit */
  421. HAL_DMA_DeInit(uartHandle->hdmarx);
  422. /* USART1 interrupt Deinit */
  423. HAL_NVIC_DisableIRQ(USART1_IRQn);
  424. /* USER CODE BEGIN USART1_MspDeInit 1 */
  425. /* USER CODE END USART1_MspDeInit 1 */
  426. }
  427. else if(uartHandle->Instance==USART2)
  428. {
  429. /* USER CODE BEGIN USART2_MspDeInit 0 */
  430. /* USER CODE END USART2_MspDeInit 0 */
  431. /* Peripheral clock disable */
  432. __HAL_RCC_USART2_CLK_DISABLE();
  433. /**USART2 GPIO Configuration
  434. PD5 ------> USART2_TX
  435. PD6 ------> USART2_RX
  436. */
  437. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5|GPIO_PIN_6);
  438. /* USART2 DMA DeInit */
  439. HAL_DMA_DeInit(uartHandle->hdmarx);
  440. /* USART2 interrupt Deinit */
  441. HAL_NVIC_DisableIRQ(USART2_IRQn);
  442. /* USER CODE BEGIN USART2_MspDeInit 1 */
  443. /* USER CODE END USART2_MspDeInit 1 */
  444. }
  445. else if(uartHandle->Instance==USART3)
  446. {
  447. /* USER CODE BEGIN USART3_MspDeInit 0 */
  448. /* USER CODE END USART3_MspDeInit 0 */
  449. /* Peripheral clock disable */
  450. __HAL_RCC_USART3_CLK_DISABLE();
  451. /**USART3 GPIO Configuration
  452. PD8 ------> USART3_TX
  453. PD9 ------> USART3_RX
  454. */
  455. HAL_GPIO_DeInit(GPIOD, GPIO_PIN_8|GPIO_PIN_9);
  456. /* USART3 DMA DeInit */
  457. HAL_DMA_DeInit(uartHandle->hdmarx);
  458. /* USART3 interrupt Deinit */
  459. HAL_NVIC_DisableIRQ(USART3_IRQn);
  460. /* USER CODE BEGIN USART3_MspDeInit 1 */
  461. /* USER CODE END USART3_MspDeInit 1 */
  462. }
  463. else if(uartHandle->Instance==USART6)
  464. {
  465. /* USER CODE BEGIN USART6_MspDeInit 0 */
  466. /* USER CODE END USART6_MspDeInit 0 */
  467. /* Peripheral clock disable */
  468. __HAL_RCC_USART6_CLK_DISABLE();
  469. /**USART6 GPIO Configuration
  470. PG9 ------> USART6_RX
  471. PG14 ------> USART6_TX
  472. */
  473. HAL_GPIO_DeInit(GPIOG, GPIO_PIN_9|GPIO_PIN_14);
  474. /* USART6 DMA DeInit */
  475. HAL_DMA_DeInit(uartHandle->hdmarx);
  476. /* USART6 interrupt Deinit */
  477. HAL_NVIC_DisableIRQ(USART6_IRQn);
  478. /* USER CODE BEGIN USART6_MspDeInit 1 */
  479. /* USER CODE END USART6_MspDeInit 1 */
  480. }
  481. }
  482. /* USER CODE BEGIN 1 */
  483. void serialPutString(uint8_t *fmt, ...)
  484. {
  485. uint16_t length = 0;
  486. uint8_t buffer[2048];
  487. va_list args;
  488. va_start(args, fmt);
  489. int rc = vsnprintf((char *)buffer, sizeof(buffer), (char *)fmt, args);
  490. va_end(args);
  491. while (buffer[length] != '\0')
  492. {
  493. length++;
  494. }
  495. HAL_UART_Transmit(&DEBUG_USART, (uint8_t *)buffer, sizeof(buffer), TX_TIMEOUT);
  496. }
  497. /* USER CODE END 1 */
  498. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/