stm32f10x_it.c 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. /**
  2. ******************************************************************************
  3. * @file Project/STM32F10x_StdPeriph_Template/stm32f10x_it.c
  4. * @author MCD Application Team
  5. * @version V3.5.0
  6. * @date 08-April-2011
  7. * @brief Main Interrupt Service Routines.
  8. * This file provides template for all exceptions handler and
  9. * peripherals interrupt service routine.
  10. ******************************************************************************
  11. * @attention
  12. *
  13. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  14. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  15. * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  16. * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  17. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  18. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  19. *
  20. * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  21. ******************************************************************************
  22. */
  23. /* Includes ------------------------------------------------------------------*/
  24. #include "stm32f10x_it.h"
  25. #include "includes.h"
  26. #include "radio.h"
  27. /** @addtogroup STM32F10x_StdPeriph_Template
  28. * @{
  29. */
  30. /* Private typedef -----------------------------------------------------------*/
  31. /* Private define ------------------------------------------------------------*/
  32. /* Private macro -------------------------------------------------------------*/
  33. /* Private variables ---------------------------------------------------------*/
  34. /* Private function prototypes -----------------------------------------------*/
  35. /* Private functions ---------------------------------------------------------*/
  36. /******************************************************************************/
  37. /* Cortex-M3 Processor Exceptions Handlers */
  38. /******************************************************************************/
  39. extern volatile bool IrqFired;
  40. //typedef void ( DioIrqHandler )( void* context );
  41. //static DioIrqHandler *dio1IrqCallback=NULL; //记录DIO1的回调函数句柄
  42. //在中断回调函数中回调 void SX126xIoIrqInit( DioIrqHandler dioIrq ) 中注册的 dioIrq 回调
  43. void EXTI9_5_IRQHandler(void){
  44. if(EXTI_GetITStatus(EXTI_Line8) != RESET)//lora中断
  45. {
  46. IrqFired = true;
  47. EXTI_ClearITPendingBit(EXTI_Line8);//清除中断标志位
  48. }
  49. }
  50. void EXTI15_10_IRQHandler(void){
  51. }
  52. /**
  53. * @brief This function handles NMI exception.
  54. * @param None
  55. * @retval None
  56. */
  57. void NMI_Handler(void)
  58. {
  59. }
  60. /**
  61. * @brief This function handles Hard Fault exception.
  62. * @param None
  63. * @retval None
  64. */
  65. void HardFault_Handler(void)
  66. {
  67. /* Go to infinite loop when Hard Fault exception occurs */
  68. while (1)
  69. {
  70. }
  71. }
  72. /**
  73. * @brief This function handles Memory Manage exception.
  74. * @param None
  75. * @retval None
  76. */
  77. void MemManage_Handler(void)
  78. {
  79. /* Go to infinite loop when Memory Manage exception occurs */
  80. while (1)
  81. {
  82. }
  83. }
  84. /**
  85. * @brief This function handles Bus Fault exception.
  86. * @param None
  87. * @retval None
  88. */
  89. void BusFault_Handler(void)
  90. {
  91. /* Go to infinite loop when Bus Fault exception occurs */
  92. while (1)
  93. {
  94. }
  95. }
  96. /**
  97. * @brief This function handles Usage Fault exception.
  98. * @param None
  99. * @retval None
  100. */
  101. void UsageFault_Handler(void)
  102. {
  103. /* Go to infinite loop when Usage Fault exception occurs */
  104. while (1)
  105. {
  106. }
  107. }
  108. /**
  109. * @brief This function handles SVCall exception.
  110. * @param None
  111. * @retval None
  112. */
  113. void SVC_Handler(void)
  114. {
  115. }
  116. /**
  117. * @brief This function handles Debug Monitor exception.
  118. * @param None
  119. * @retval None
  120. */
  121. void DebugMon_Handler(void)
  122. {
  123. }
  124. /**
  125. * @brief This function handles PendSVC exception.
  126. * @param None
  127. * @retval None
  128. */
  129. //void PendSV_Handler(void)
  130. //{
  131. //}
  132. /******************************************************************************/
  133. /* STM32F10x Peripherals Interrupt Handlers */
  134. /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
  135. /* available peripheral interrupt handler's name please refer to the startup */
  136. /* file (startup_stm32f10x_xx.s). */
  137. /******************************************************************************/
  138. /**
  139. * @brief This function handles PPP interrupt request.
  140. * @param None
  141. * @retval None
  142. */
  143. /*void PPP_IRQHandler(void)
  144. {
  145. }*/
  146. /**
  147. * @}
  148. */
  149. void DMA1_Channel4_IRQHandler(void)
  150. {
  151. OSIntEnter();
  152. if( DMA_GetFlagStatus(DMA1_FLAG_TC4) == SET )
  153. {
  154. USART_DMACmd(USART1, USART_DMAReq_Tx, DISABLE);
  155. DMA_Cmd (DMA1_Channel4, DISABLE);//USART1 TX
  156. DMA_ClearFlag(DMA1_FLAG_TC4);
  157. while( USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  158. {};
  159. GPIO_ResetBits(GPIOA,GPIO_Pin_8);//ENABLE 485 Receive
  160. }
  161. OSIntExit();
  162. }
  163. void DMA1_Channel7_IRQHandler(void)
  164. {
  165. OSIntEnter();
  166. if( DMA_GetFlagStatus(DMA1_FLAG_TC7) == SET )
  167. {
  168. USART_DMACmd(USART2, USART_DMAReq_Tx, DISABLE);
  169. DMA_Cmd (DMA1_Channel7, DISABLE);//USART2 TX
  170. DMA_ClearFlag(DMA1_FLAG_TC7);
  171. while( USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
  172. {};
  173. GPIO_ResetBits(GPIOA,GPIO_Pin_1); //ENABLE 485 Receive
  174. }
  175. OSIntExit();
  176. }
  177. //void USART1_IRQHandler(void) //串口1中断服务程序
  178. //{
  179. // OS_ERR err;
  180. // OSIntEnter();
  181. //
  182. // if(USART_GetITStatus(USART1, USART_IT_IDLE) == SET) //检测到总线空闲
  183. // {
  184. // USART1_RxBUF.len = USATR1_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel5);
  185. // OSTaskQPost ((OS_TCB *)&AppTask_OTA_HandleTCB, //目标任务的控制块
  186. // (void *)USART1_RxBUF.buff, //消息内容
  187. // (OS_MSG_SIZE )USART1_RxBUF.len, //消息长度
  188. // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
  189. // (OS_ERR *)&err); //返回错误类型
  190. // DMA_Cmd (DMA1_Channel5, DISABLE);
  191. // DMA_SetCurrDataCounter(DMA1_Channel5, USATR1_RX_SIZE);
  192. // DMA_Cmd (DMA1_Channel5, ENABLE);
  193. // USART_ClearFlag(USART1, USART_FLAG_RXNE);
  194. // USART_GetITStatus(USART1, USART_IT_IDLE); //Clear IDLE Flag
  195. // USART_ReceiveData(USART1); //Clear IDLE Flag
  196. // }
  197. //
  198. // OSIntExit();
  199. //}
  200. //void USART2_IRQHandler(void)
  201. //{
  202. // OS_ERR err;
  203. // OSIntEnter();
  204. // if(USART_GetITStatus(USART2, USART_IT_IDLE) == SET)
  205. // {
  206. // ErrFlag = 0;//计数清零
  207. //
  208. // USART2_RxBUF.len = USATR2_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel6);
  209. //
  210. // OSTaskQPost ((OS_TCB *)&AppTask_Server_ComTCB, //目标任务的控制块
  211. // (void *)USART2_RxBUF.buff, //消息内容
  212. // (OS_MSG_SIZE )USART2_RxBUF.len, //消息长度
  213. // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
  214. // (OS_ERR *)&err); //返回错误类型
  215. // DMA_Cmd (DMA1_Channel6, DISABLE);
  216. // DMA_SetCurrDataCounter(DMA1_Channel6, USATR2_RX_SIZE);
  217. // DMA_Cmd (DMA1_Channel6, ENABLE);
  218. //
  219. // USART_ClearFlag(USART2, USART_FLAG_RXNE);
  220. // USART_GetITStatus(USART2, USART_IT_IDLE); //Clear IDLE Flag
  221. // USART_ReceiveData(USART2); //Clear IDLE Flag
  222. // }
  223. //
  224. // OSIntExit();
  225. //}
  226. /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/