From d9321b6a77d97a67fb6e9f0a9fd4da73a1da4078 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期一, 18 三月 2024 09:15:37 +0800 Subject: [PATCH] 1 --- Src/stm32l0xx_it.c | 39 +++++++++++++++++++-------------------- 1 files changed, 19 insertions(+), 20 deletions(-) diff --git a/Src/stm32l0xx_it.c b/Src/stm32l0xx_it.c index 761c2bb..824c807 100644 --- a/Src/stm32l0xx_it.c +++ b/Src/stm32l0xx_it.c @@ -43,6 +43,9 @@ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ float nomove_count=0; +volatile uint16_t rx_len ; //接收一帧数据的长度 +volatile uint8_t recv_end_flag; //一帧数据接收完成标志 +extern uint8_t GPS_GGAdate[200]; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ @@ -57,13 +60,12 @@ /* External variables --------------------------------------------------------*/ extern LPTIM_HandleTypeDef hlptim1; +extern DMA_HandleTypeDef hdma_lpuart1_rx; +extern DMA_HandleTypeDef hdma_lpuart1_tx; extern DMA_HandleTypeDef hdma_usart1_rx; extern DMA_HandleTypeDef hdma_usart1_tx; -extern DMA_HandleTypeDef hdma_usart5_rx; -extern DMA_HandleTypeDef hdma_usart5_tx; extern UART_HandleTypeDef hlpuart1; extern UART_HandleTypeDef huart1; -extern UART_HandleTypeDef huart5; /* USER CODE BEGIN EV */ /* USER CODE END EV */ @@ -200,8 +202,8 @@ /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 0 */ /* USER CODE END DMA1_Channel4_5_6_7_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_usart5_rx); - HAL_DMA_IRQHandler(&hdma_usart5_tx); + HAL_DMA_IRQHandler(&hdma_lpuart1_rx); + HAL_DMA_IRQHandler(&hdma_lpuart1_tx); /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 1 */ /* USER CODE END DMA1_Channel4_5_6_7_IRQn 1 */ @@ -219,20 +221,6 @@ /* USER CODE BEGIN LPTIM1_IRQn 1 */ /* USER CODE END LPTIM1_IRQn 1 */ -} - -/** - * @brief This function handles USART4 and USART5 interrupt. - */ -void USART4_5_IRQHandler(void) -{ - /* USER CODE BEGIN USART4_5_IRQn 0 */ -__HAL_UART_CLEAR_IDLEFLAG(&huart1); - /* USER CODE END USART4_5_IRQn 0 */ - HAL_UART_IRQHandler(&huart5); - /* USER CODE BEGIN USART4_5_IRQn 1 */ - - /* USER CODE END USART4_5_IRQn 1 */ } /** @@ -255,7 +243,18 @@ void LPUART1_IRQHandler(void) { /* USER CODE BEGIN LPUART1_IRQn 0 */ - + uint32_t tmp_flag = 0; + uint32_t temp; + tmp_flag =__HAL_UART_GET_FLAG(&hlpuart1,UART_FLAG_IDLE); //获取IDLE标志位 + if((tmp_flag != RESET))//idle标志被置位 + { + __HAL_UART_CLEAR_IDLEFLAG(&hlpuart1);//清除标志位 + HAL_UART_DMAStop(&hlpuart1); // 停止DMA传输,防止 + temp = __HAL_DMA_GET_COUNTER(&hdma_lpuart1_rx);// 获取DMA中未传输的数据个数 + rx_len = LPUART_SIZE - temp; //总计数减去未传输的数据个数,得到已经接收的数据个数 + recv_end_flag = 1; // 接受完成标志位置1 +// HAL_UART_Receive_DMA(&hlpuart1,GPS_GGAdate,LPUART_SIZE);//重新打开DMA接收 + } /* USER CODE END LPUART1_IRQn 0 */ HAL_UART_IRQHandler(&hlpuart1); /* USER CODE BEGIN LPUART1_IRQn 1 */ -- Gitblit v1.9.3