| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318 |
- /**
- ******************************************************************************
- * @file Project/STM32F10x_StdPeriph_Template/stm32f10x_it.c
- * @author MCD Application Team
- * @version V3.5.0
- * @date 08-April-2011
- * @brief Main Interrupt Service Routines.
- * This file provides template for all exceptions handler and
- * peripherals interrupt service routine.
- ******************************************************************************
- * @attention
- *
- * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
- * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
- * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
- * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
- * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
- * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
- *
- * <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
- ******************************************************************************
- */
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f10x_it.h"
- #include "includes.h"
- #include "radio.h"
- #include "encoder.h"
- /** @addtogroup STM32F10x_StdPeriph_Template
- * @{
- */
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- /* Private macro -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* Private function prototypes -----------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- /******************************************************************************/
- /* Cortex-M3 Processor Exceptions Handlers */
- /******************************************************************************/
- extern volatile bool IrqFired;
- //typedef void ( DioIrqHandler )( void* context );
- //static DioIrqHandler *dio1IrqCallback=NULL; //记录DIO1的回调函数句柄
- //在中断回调函数中回调 void SX126xIoIrqInit( DioIrqHandler dioIrq ) 中注册的 dioIrq 回调
- void EXTI9_5_IRQHandler(void){
- if(EXTI_GetITStatus(EXTI_Line8) != RESET)//lora中断
- {
- IrqFired = true;
- EXTI_ClearITPendingBit(EXTI_Line8);//清除中断标志位
- }
-
- if(EXTI_GetITStatus(EXTI_Line6) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE6);
- EXTI_ClearITPendingBit(EXTI_Line6);//清除中断标志位
- }
-
- if(EXTI_GetITStatus(EXTI_Line7) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE7);
- EXTI_ClearITPendingBit(EXTI_Line7);//清除中断标志位
- }
-
-
- if(EXTI_GetITStatus(EXTI_Line9) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE9);
- EXTI_ClearITPendingBit(EXTI_Line9);//清除中断标志位
- }
- }
- void EXTI15_10_IRQHandler(void){
- if(EXTI_GetITStatus(EXTI_Line10) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE10);
- EXTI_ClearITPendingBit(EXTI_Line10);//清除中断标志位
- }
-
- if(EXTI_GetITStatus(EXTI_Line12) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE12);
- EXTI_ClearITPendingBit(EXTI_Line12);//清除中断标志位
- }
-
-
- if(EXTI_GetITStatus(EXTI_Line13) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE13);
- EXTI_ClearITPendingBit(EXTI_Line13);//清除中断标志位
- }
-
- if(EXTI_GetITStatus(EXTI_Line14) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE14);
- EXTI_ClearITPendingBit(EXTI_Line14);//清除中断标志位
- }
-
-
- if(EXTI_GetITStatus(EXTI_Line15) != RESET)//编码器中断
- {
- encoder_irq_handle(EXTI_LINE15);
- EXTI_ClearITPendingBit(EXTI_Line15);//清除中断标志位
- }
- }
- /**
- * @brief This function handles NMI exception.
- * @param None
- * @retval None
- */
- void NMI_Handler(void)
- {
- }
- /**
- * @brief This function handles Hard Fault exception.
- * @param None
- * @retval None
- */
- void HardFault_Handler(void)
- {
- /* Go to infinite loop when Hard Fault exception occurs */
- while (1)
- {
- }
- }
- /**
- * @brief This function handles Memory Manage exception.
- * @param None
- * @retval None
- */
- void MemManage_Handler(void)
- {
- /* Go to infinite loop when Memory Manage exception occurs */
- while (1)
- {
- }
- }
- /**
- * @brief This function handles Bus Fault exception.
- * @param None
- * @retval None
- */
- void BusFault_Handler(void)
- {
- /* Go to infinite loop when Bus Fault exception occurs */
- while (1)
- {
- }
- }
- /**
- * @brief This function handles Usage Fault exception.
- * @param None
- * @retval None
- */
- void UsageFault_Handler(void)
- {
- /* Go to infinite loop when Usage Fault exception occurs */
- while (1)
- {
- }
- }
- /**
- * @brief This function handles SVCall exception.
- * @param None
- * @retval None
- */
- void SVC_Handler(void)
- {
- }
- /**
- * @brief This function handles Debug Monitor exception.
- * @param None
- * @retval None
- */
- void DebugMon_Handler(void)
- {
- }
- /**
- * @brief This function handles PendSVC exception.
- * @param None
- * @retval None
- */
- //void PendSV_Handler(void)
- //{
- //}
- /******************************************************************************/
- /* STM32F10x Peripherals Interrupt Handlers */
- /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
- /* available peripheral interrupt handler's name please refer to the startup */
- /* file (startup_stm32f10x_xx.s). */
- /******************************************************************************/
- /**
- * @brief This function handles PPP interrupt request.
- * @param None
- * @retval None
- */
- /*void PPP_IRQHandler(void)
- {
- }*/
- /**
- * @}
- */
- void DMA1_Channel4_IRQHandler(void)
- {
- OSIntEnter();
-
- if( DMA_GetFlagStatus(DMA1_FLAG_TC4) == SET )
- {
- USART_DMACmd(USART1, USART_DMAReq_Tx, DISABLE);
- DMA_Cmd (DMA1_Channel4, DISABLE);//USART1 TX
- DMA_ClearFlag(DMA1_FLAG_TC4);
- while( USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
- {};
- GPIO_ResetBits(GPIOA,GPIO_Pin_8);//ENABLE 485 Receive
- }
-
-
- OSIntExit();
- }
- void DMA1_Channel7_IRQHandler(void)
- {
- OSIntEnter();
-
-
- if( DMA_GetFlagStatus(DMA1_FLAG_TC7) == SET )
- {
- USART_DMACmd(USART2, USART_DMAReq_Tx, DISABLE);
- DMA_Cmd (DMA1_Channel7, DISABLE);//USART2 TX
- DMA_ClearFlag(DMA1_FLAG_TC7);
- while( USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
- {};
- GPIO_ResetBits(GPIOA,GPIO_Pin_1); //ENABLE 485 Receive
- }
-
- OSIntExit();
- }
- //void USART1_IRQHandler(void) //串口1中断服务程序
- //{
- // OS_ERR err;
- // OSIntEnter();
- //
- // if(USART_GetITStatus(USART1, USART_IT_IDLE) == SET) //检测到总线空闲
- // {
- // USART1_RxBUF.len = USATR1_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel5);
- // OSTaskQPost ((OS_TCB *)&AppTask_OTA_HandleTCB, //目标任务的控制块
- // (void *)USART1_RxBUF.buff, //消息内容
- // (OS_MSG_SIZE )USART1_RxBUF.len, //消息长度
- // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
- // (OS_ERR *)&err); //返回错误类型
- // DMA_Cmd (DMA1_Channel5, DISABLE);
- // DMA_SetCurrDataCounter(DMA1_Channel5, USATR1_RX_SIZE);
- // DMA_Cmd (DMA1_Channel5, ENABLE);
- // USART_ClearFlag(USART1, USART_FLAG_RXNE);
- // USART_GetITStatus(USART1, USART_IT_IDLE); //Clear IDLE Flag
- // USART_ReceiveData(USART1); //Clear IDLE Flag
- // }
- //
- // OSIntExit();
- //}
- //void USART2_IRQHandler(void)
- //{
- // OS_ERR err;
- // OSIntEnter();
- // if(USART_GetITStatus(USART2, USART_IT_IDLE) == SET)
- // {
- // ErrFlag = 0;//计数清零
- //
- // USART2_RxBUF.len = USATR2_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel6);
- //
- // OSTaskQPost ((OS_TCB *)&AppTask_Server_ComTCB, //目标任务的控制块
- // (void *)USART2_RxBUF.buff, //消息内容
- // (OS_MSG_SIZE )USART2_RxBUF.len, //消息长度
- // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
- // (OS_ERR *)&err); //返回错误类型
- // DMA_Cmd (DMA1_Channel6, DISABLE);
- // DMA_SetCurrDataCounter(DMA1_Channel6, USATR2_RX_SIZE);
- // DMA_Cmd (DMA1_Channel6, ENABLE);
- //
- // USART_ClearFlag(USART2, USART_FLAG_RXNE);
- // USART_GetITStatus(USART2, USART_IT_IDLE); //Clear IDLE Flag
- // USART_ReceiveData(USART2); //Clear IDLE Flag
- // }
- //
- // OSIntExit();
- //}
- /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
|