stm32f10x_it.c 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  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. /** @addtogroup STM32F10x_StdPeriph_Template
  26. * @{
  27. */
  28. /* Private typedef -----------------------------------------------------------*/
  29. /* Private define ------------------------------------------------------------*/
  30. /* Private macro -------------------------------------------------------------*/
  31. /* Private variables ---------------------------------------------------------*/
  32. /* Private function prototypes -----------------------------------------------*/
  33. /* Private functions ---------------------------------------------------------*/
  34. /******************************************************************************/
  35. /* Cortex-M3 Processor Exceptions Handlers */
  36. /******************************************************************************/
  37. /**
  38. * @brief This function handles NMI exception.
  39. * @param None
  40. * @retval None
  41. */
  42. void NMI_Handler(void)
  43. {
  44. }
  45. /**
  46. * @brief This function handles Hard Fault exception.
  47. * @param None
  48. * @retval None
  49. */
  50. void HardFault_Handler(void)
  51. {
  52. /* Go to infinite loop when Hard Fault exception occurs */
  53. while (1)
  54. {
  55. }
  56. }
  57. /**
  58. * @brief This function handles Memory Manage exception.
  59. * @param None
  60. * @retval None
  61. */
  62. void MemManage_Handler(void)
  63. {
  64. /* Go to infinite loop when Memory Manage exception occurs */
  65. while (1)
  66. {
  67. }
  68. }
  69. /**
  70. * @brief This function handles Bus Fault exception.
  71. * @param None
  72. * @retval None
  73. */
  74. void BusFault_Handler(void)
  75. {
  76. /* Go to infinite loop when Bus Fault exception occurs */
  77. while (1)
  78. {
  79. }
  80. }
  81. /**
  82. * @brief This function handles Usage Fault exception.
  83. * @param None
  84. * @retval None
  85. */
  86. void UsageFault_Handler(void)
  87. {
  88. /* Go to infinite loop when Usage Fault exception occurs */
  89. while (1)
  90. {
  91. }
  92. }
  93. /**
  94. * @brief This function handles SVCall exception.
  95. * @param None
  96. * @retval None
  97. */
  98. void SVC_Handler(void)
  99. {
  100. }
  101. /**
  102. * @brief This function handles Debug Monitor exception.
  103. * @param None
  104. * @retval None
  105. */
  106. void DebugMon_Handler(void)
  107. {
  108. }
  109. /**
  110. * @brief This function handles PendSVC exception.
  111. * @param None
  112. * @retval None
  113. */
  114. //void PendSV_Handler(void)
  115. //{
  116. //}
  117. /**
  118. * @brief This function handles SysTick Handler.
  119. * @param None
  120. * @retval None
  121. */
  122. volatile uint32_t TickCounter;
  123. void SysTick_Handler(void)
  124. {
  125. OSIntEnter();
  126. OSTimeTick();
  127. OSIntExit();
  128. TickCounter++;
  129. if((TickCounter%1000) == 0) IWDG_ReloadCounter();
  130. }
  131. uint32_t Get_SysTick(void)
  132. {
  133. return TickCounter;
  134. }
  135. /******************************************************************************/
  136. /* STM32F10x Peripherals Interrupt Handlers */
  137. /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
  138. /* available peripheral interrupt handler's name please refer to the startup */
  139. /* file (startup_stm32f10x_xx.s). */
  140. /******************************************************************************/
  141. /**
  142. * @brief This function handles PPP interrupt request.
  143. * @param None
  144. * @retval None
  145. */
  146. /*void PPP_IRQHandler(void)
  147. {
  148. }*/
  149. /**
  150. * @}
  151. */
  152. void DMA1_Channel4_IRQHandler(void)
  153. {
  154. OSIntEnter();
  155. if( DMA_GetFlagStatus(DMA1_FLAG_TC4) == SET )
  156. {
  157. USART_DMACmd(USART1, USART_DMAReq_Tx, DISABLE);
  158. DMA_Cmd (DMA1_Channel4, DISABLE);//USART1 TX
  159. DMA_ClearFlag(DMA1_FLAG_TC4);
  160. while( USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  161. {};
  162. GPIO_ResetBits(GPIOA,GPIO_Pin_8);//ENABLE 485 Receive
  163. }
  164. OSIntExit();
  165. }
  166. void DMA1_Channel7_IRQHandler(void)
  167. {
  168. OSIntEnter();
  169. if( DMA_GetFlagStatus(DMA1_FLAG_TC7) == SET )
  170. {
  171. USART_DMACmd(USART2, USART_DMAReq_Tx, DISABLE);
  172. DMA_Cmd (DMA1_Channel7, DISABLE);//USART2 TX
  173. DMA_ClearFlag(DMA1_FLAG_TC7);
  174. while( USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
  175. {};
  176. GPIO_ResetBits(GPIOA,GPIO_Pin_1); //ENABLE 485 Receive
  177. }
  178. OSIntExit();
  179. }
  180. //void USART1_IRQHandler(void) //串口1中断服务程序
  181. //{
  182. // OS_ERR err;
  183. // OSIntEnter();
  184. //
  185. // if(USART_GetITStatus(USART1, USART_IT_IDLE) == SET) //检测到总线空闲
  186. // {
  187. // USART1_RxBUF.len = USATR1_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel5);
  188. // OSTaskQPost ((OS_TCB *)&AppTask_OTA_HandleTCB, //目标任务的控制块
  189. // (void *)USART1_RxBUF.buff, //消息内容
  190. // (OS_MSG_SIZE )USART1_RxBUF.len, //消息长度
  191. // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
  192. // (OS_ERR *)&err); //返回错误类型
  193. // DMA_Cmd (DMA1_Channel5, DISABLE);
  194. // DMA_SetCurrDataCounter(DMA1_Channel5, USATR1_RX_SIZE);
  195. // DMA_Cmd (DMA1_Channel5, ENABLE);
  196. // USART_ClearFlag(USART1, USART_FLAG_RXNE);
  197. // USART_GetITStatus(USART1, USART_IT_IDLE); //Clear IDLE Flag
  198. // USART_ReceiveData(USART1); //Clear IDLE Flag
  199. // }
  200. //
  201. // OSIntExit();
  202. //}
  203. //void USART2_IRQHandler(void)
  204. //{
  205. // OS_ERR err;
  206. // OSIntEnter();
  207. // if(USART_GetITStatus(USART2, USART_IT_IDLE) == SET)
  208. // {
  209. // ErrFlag = 0;//计数清零
  210. //
  211. // USART2_RxBUF.len = USATR2_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel6);
  212. //
  213. // OSTaskQPost ((OS_TCB *)&AppTask_Server_ComTCB, //目标任务的控制块
  214. // (void *)USART2_RxBUF.buff, //消息内容
  215. // (OS_MSG_SIZE )USART2_RxBUF.len, //消息长度
  216. // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
  217. // (OS_ERR *)&err); //返回错误类型
  218. // DMA_Cmd (DMA1_Channel6, DISABLE);
  219. // DMA_SetCurrDataCounter(DMA1_Channel6, USATR2_RX_SIZE);
  220. // DMA_Cmd (DMA1_Channel6, ENABLE);
  221. //
  222. // USART_ClearFlag(USART2, USART_FLAG_RXNE);
  223. // USART_GetITStatus(USART2, USART_IT_IDLE); //Clear IDLE Flag
  224. // USART_ReceiveData(USART2); //Clear IDLE Flag
  225. // }
  226. //
  227. // OSIntExit();
  228. //}
  229. /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/