From d487f58c6be4ed22f735d12861b59b85c3a924b9 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期六, 20 十二月 2025 21:53:25 +0800
Subject: [PATCH] HTTP下载路径文件成功,解析路径文件成功,CRC用的软件,硬件解析不对。准备改BOOT

---
 STM32H743/Core/Src/stm32h7xx_it.c |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/STM32H743/Core/Src/stm32h7xx_it.c b/STM32H743/Core/Src/stm32h7xx_it.c
index 02d6573..78808b0 100644
--- a/STM32H743/Core/Src/stm32h7xx_it.c
+++ b/STM32H743/Core/Src/stm32h7xx_it.c
@@ -23,6 +23,7 @@
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
 #include "bluetooth.h"
+#include "DBG.h"
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -60,6 +61,8 @@
 extern TIM_HandleTypeDef htim3;
 extern TIM_HandleTypeDef htim4;
 extern DMA_HandleTypeDef hdma_uart4_rx;
+extern DMA_HandleTypeDef hdma_uart5_rx;
+extern DMA_HandleTypeDef hdma_uart5_tx;
 extern DMA_HandleTypeDef hdma_usart1_rx;
 extern DMA_HandleTypeDef hdma_usart1_tx;
 extern DMA_HandleTypeDef hdma_usart2_rx;
@@ -69,6 +72,7 @@
 extern DMA_HandleTypeDef hdma_usart6_rx;
 extern DMA_HandleTypeDef hdma_usart6_tx;
 extern UART_HandleTypeDef huart4;
+extern UART_HandleTypeDef huart5;
 extern UART_HandleTypeDef huart1;
 extern UART_HandleTypeDef huart2;
 extern UART_HandleTypeDef huart3;
@@ -388,6 +392,20 @@
 }
 
 /**
+  * @brief This function handles UART5 global interrupt.
+  */
+void UART5_IRQHandler(void)
+{
+  /* USER CODE BEGIN UART5_IRQn 0 */
+
+  /* USER CODE END UART5_IRQn 0 */
+  HAL_UART_IRQHandler(&huart5);
+  /* USER CODE BEGIN UART5_IRQn 1 */
+
+  /* USER CODE END UART5_IRQn 1 */
+}
+
+/**
   * @brief This function handles DMA2 stream0 global interrupt.
   */
 void DMA2_Stream0_IRQHandler(void)
@@ -402,24 +420,49 @@
 }
 
 /**
+  * @brief This function handles DMA2 stream1 global interrupt.
+  */
+void DMA2_Stream1_IRQHandler(void)
+{
+  /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */
+
+  /* USER CODE END DMA2_Stream1_IRQn 0 */
+  HAL_DMA_IRQHandler(&hdma_uart5_rx);
+  /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */
+
+  /* USER CODE END DMA2_Stream1_IRQn 1 */
+}
+
+/**
+  * @brief This function handles DMA2 stream2 global interrupt.
+  */
+void DMA2_Stream2_IRQHandler(void)
+{
+  /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */
+
+  /* USER CODE END DMA2_Stream2_IRQn 0 */
+  HAL_DMA_IRQHandler(&hdma_uart5_tx);
+  /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */
+
+  /* USER CODE END DMA2_Stream2_IRQn 1 */
+}
+
+/**
   * @brief This function handles USART6 global interrupt.
   */
 void USART6_IRQHandler(void)
 {
   /* USER CODE BEGIN USART6_IRQn 0 */
+  // Circular DMA Mode: Just set a flag, do NOT stop DMA
   uint32_t tmp_flag = 0;
-    uint32_t temp;
     tmp_flag = __HAL_UART_GET_FLAG(&huart6, UART_FLAG_IDLE); 
 
     if ((tmp_flag != RESET)) 
     {
-
+        g_u32BtIdleIntCount++; // Debug Counter
         __HAL_UART_CLEAR_IDLEFLAG(&huart6);
-        HAL_UART_DMAStop(&huart6); //
-        temp  =  __HAL_DMA_GET_COUNTER(&hdma_usart6_rx);
-        uart6_dma_recv_len =  UART6_DMA_RX_BUF_SIZE - temp;
-        uart6_dma_recv_end_flag = 1;
-		HAL_UART_Receive_DMA(&huart6, uart6_dma_rxbuf, UART6_DMA_RX_BUF_SIZE);
+        // For Circular DMA, we do NOT stop DMA. Just set a flag to notify Poll.
+        uart6_dma_recv_end_flag = 1; // Notify Poll that new data arrived
     }
 
   /* USER CODE END USART6_IRQn 0 */

--
Gitblit v1.10.0