You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
4.1 KiB

11 months ago
  1. #include "uart.h"
  2. UART_HandleTypeDef huart4;
  3. UART_HandleTypeDef huart1;
  4. DMA_HandleTypeDef hdma1_stream2;
  5. DMA_HandleTypeDef hdma1_stream4;
  6. DMA_HandleTypeDef hdma2_stream2;
  7. /**
  8. * @brief UART4 Initialization Function
  9. * @param None
  10. * @retval None
  11. */
  12. void UART4_Init(void)
  13. {
  14. GPIO_InitTypeDef GPIO_InitStruct;
  15. huart4.Instance = UART4;
  16. huart4.Init.BaudRate = 256000;
  17. huart4.Init.WordLength = UART_WORDLENGTH_8B;
  18. huart4.Init.StopBits = UART_STOPBITS_1;
  19. huart4.Init.Parity = UART_PARITY_NONE;
  20. huart4.Init.Mode = UART_MODE_TX_RX;
  21. huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  22. huart4.Init.OverSampling = UART_OVERSAMPLING_16;
  23. if (HAL_UART_Init(&huart4) != HAL_OK) {
  24. Error_Handler();
  25. }
  26. /**UART4 GPIO Configuration
  27. PC10 ------> UART4_TX
  28. PC11 ------> UART4_RX
  29. */
  30. /***********************************************************************************************************************
  31. * DMA_INIT *
  32. ***********************************************************************************************************************/
  33. /* UART4 DMA Init */
  34. /* UART4_RX Init */
  35. hdma1_stream2.Instance = DMA1_Stream2;
  36. hdma1_stream2.Init.Channel = DMA_CHANNEL_4;
  37. hdma1_stream2.Init.Direction = DMA_PERIPH_TO_MEMORY;
  38. hdma1_stream2.Init.PeriphInc = DMA_PINC_DISABLE;
  39. hdma1_stream2.Init.MemInc = DMA_MINC_ENABLE;
  40. hdma1_stream2.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  41. hdma1_stream2.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  42. hdma1_stream2.Init.Mode = DMA_NORMAL;
  43. hdma1_stream2.Init.Priority = DMA_PRIORITY_LOW;
  44. hdma1_stream2.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  45. if (HAL_DMA_Init(&hdma1_stream2) != HAL_OK) {
  46. Error_Handler();
  47. }
  48. __HAL_LINKDMA(&huart4, hdmarx, hdma1_stream2);
  49. /* UART4_TX Init */
  50. hdma1_stream4.Instance = DMA1_Stream4;
  51. hdma1_stream4.Init.Channel = DMA_CHANNEL_4;
  52. hdma1_stream4.Init.Direction = DMA_MEMORY_TO_PERIPH;
  53. hdma1_stream4.Init.PeriphInc = DMA_PINC_DISABLE;
  54. hdma1_stream4.Init.MemInc = DMA_MINC_ENABLE;
  55. hdma1_stream4.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  56. hdma1_stream4.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  57. hdma1_stream4.Init.Mode = DMA_NORMAL;
  58. hdma1_stream4.Init.Priority = DMA_PRIORITY_LOW;
  59. hdma1_stream4.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
  60. if (HAL_DMA_Init(&hdma1_stream4) != HAL_OK) {
  61. Error_Handler();
  62. }
  63. __HAL_LINKDMA(&huart4, hdmatx, hdma1_stream4);
  64. }
  65. void DBUG_USART1_UART_Init(int32_t baudrate)
  66. {
  67. /* USER CODE BEGIN USART1_Init 0 */
  68. /* USER CODE END USART1_Init 0 */
  69. /* USER CODE BEGIN USART1_Init 1 */
  70. /* USER CODE END USART1_Init 1 */
  71. huart1.Instance = USART1;
  72. huart1.Init.BaudRate = baudrate;
  73. huart1.Init.WordLength = UART_WORDLENGTH_8B;
  74. huart1.Init.StopBits = UART_STOPBITS_1;
  75. huart1.Init.Parity = UART_PARITY_NONE;
  76. huart1.Init.Mode = UART_MODE_TX_RX;
  77. huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  78. huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  79. if (HAL_UART_Init(&huart1) != HAL_OK)
  80. {
  81. Error_Handler();
  82. }
  83. /* USER CODE BEGIN USART1_Init 2 */
  84. /* USER CODE END USART1_Init 2 */
  85. }
  86. /**
  87. * @brief USART1 Initialization Function
  88. * @param None
  89. * @retval None
  90. */
  91. //static void USART1_UART_Init(void)
  92. //{
  93. //
  94. // /* USER CODE BEGIN USART1_Init 0 */
  95. //
  96. // /* USER CODE END USART1_Init 0 */
  97. //
  98. // /* USER CODE BEGIN USART1_Init 1 */
  99. //
  100. // /* USER CODE END USART1_Init 1 */
  101. // huart1.Instance = USART1;
  102. // huart1.Init.BaudRate = 115200;
  103. // huart1.Init.WordLength = UART_WORDLENGTH_8B;
  104. // huart1.Init.StopBits = UART_STOPBITS_1;
  105. // huart1.Init.Parity = UART_PARITY_NONE;
  106. // huart1.Init.Mode = UART_MODE_TX_RX;
  107. // huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  108. // huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  109. // if (HAL_UART_Init(&huart1) != HAL_OK)
  110. // {
  111. // Error_Handler();
  112. // }
  113. // /* USER CODE BEGIN USART1_Init 2 */
  114. //
  115. // /* USER CODE END USART1_Init 2 */
  116. //
  117. //}