| | |
| | | /* 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 -----------------------------------------------*/ |
| | |
| | | |
| | | /* 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 UART_HandleTypeDef hlpuart1; |
| | | extern UART_HandleTypeDef huart1; |
| | | /* USER CODE BEGIN EV */ |
| | | |
| | | /* USER CODE END EV */ |
| | | |
| | | /******************************************************************************/ |
| | | /* Cortex-M0+ Processor Interruption and Exception Handlers */ |
| | | /* Cortex-M0+ Processor Interruption and Exception Handlers */ |
| | | /******************************************************************************/ |
| | | /** |
| | | * @brief This function handles Non maskable interrupt. |
| | | * @brief This function handles Non maskable Interrupt. |
| | | */ |
| | | void NMI_Handler(void) |
| | | { |
| | |
| | | while (1) |
| | | { |
| | | /* USER CODE BEGIN W1_HardFault_IRQn 0 */ |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader |
| | | /* USER CODE END W1_HardFault_IRQn 0 */ |
| | | } |
| | | } |
| | |
| | | void EXTI0_1_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN EXTI0_1_IRQn 0 */ |
| | | if(GET_IMUINT) |
| | | { |
| | | nomove_count = 0; |
| | | } |
| | | |
| | | if(!GET_USERKEY) |
| | | { |
| | | waitusart_timer = tag_frequency*10; |
| | | } |
| | | |
| | | |
| | | /* USER CODE END EXTI0_1_IRQn 0 */ |
| | | HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); |
| | | HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1); |
| | | /* USER CODE BEGIN EXTI0_1_IRQn 1 */ |
| | | //DW_DISABLE; |
| | | |
| | | /* USER CODE END EXTI0_1_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles EXTI line 4 to 15 interrupts. |
| | | */ |
| | | void EXTI4_15_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN EXTI4_15_IRQn 0 */ |
| | | |
| | | /* USER CODE END EXTI4_15_IRQn 0 */ |
| | | HAL_GPIO_EXTI_IRQHandler(RADIO_DIO1_Pin); |
| | | HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12); |
| | | /* USER CODE BEGIN EXTI4_15_IRQn 1 */ |
| | | |
| | | /* USER CODE END EXTI4_15_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles DMA1 channel 4, channel 5, channel 6 and channel 7 interrupts. |
| | | */ |
| | | void DMA1_Channel4_5_6_7_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN DMA1_Channel4_5_6_7_IRQn 0 */ |
| | | |
| | | /* USER CODE END DMA1_Channel4_5_6_7_IRQn 0 */ |
| | | 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 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles LPTIM1 global interrupt / LPTIM1 wake-up interrupt through EXTI line 29. |
| | | */ |
| | | void LPTIM1_IRQHandler(void) |
| | | { |
| | | /* USER CODE BEGIN LPTIM1_IRQn 0 */ |
| | | |
| | | |
| | | /* USER CODE END LPTIM1_IRQn 0 */ |
| | | HAL_LPTIM_IRQHandler(&hlptim1); |
| | | /* USER CODE BEGIN LPTIM1_IRQn 1 */ |
| | |
| | | /* USER CODE END USART1_IRQn 1 */ |
| | | } |
| | | |
| | | /** |
| | | * @brief This function handles LPUART1 global interrupt / LPUART1 wake-up interrupt through EXTI line 28. |
| | | */ |
| | | 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 */ |
| | | |
| | | /* USER CODE END LPUART1_IRQn 1 */ |
| | | } |
| | | |
| | | /* USER CODE BEGIN 1 */ |
| | | |
| | | /* USER CODE END 1 */ |
| | | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |