stm32f10x_it.c 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  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. volatile uint32_t TickSec = 0;
  124. void SysTick_Handler(void)
  125. {
  126. OSIntEnter();
  127. OSTimeTick();
  128. OSIntExit();
  129. TickCounter++;
  130. if(TickCounter>=0xFFFFFFFF)
  131. TickSec += 1;
  132. }
  133. uint32_t Get_SysTick(void)
  134. {
  135. return TickCounter;
  136. }
  137. /******************************************************************************/
  138. /* STM32F10x Peripherals Interrupt Handlers */
  139. /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
  140. /* available peripheral interrupt handler's name please refer to the startup */
  141. /* file (startup_stm32f10x_xx.s). */
  142. /******************************************************************************/
  143. /**
  144. * @brief This function handles PPP interrupt request.
  145. * @param None
  146. * @retval None
  147. */
  148. /*void PPP_IRQHandler(void)
  149. {
  150. }*/
  151. /**
  152. * @}
  153. */
  154. void DMA1_Channel4_IRQHandler(void)
  155. {
  156. OSIntEnter();
  157. if( DMA_GetFlagStatus(DMA1_FLAG_TC4) == SET )
  158. {
  159. USART_DMACmd(USART1, USART_DMAReq_Tx, DISABLE);
  160. DMA_Cmd (DMA1_Channel4, DISABLE);//USART1 TX
  161. DMA_ClearFlag(DMA1_FLAG_TC4);
  162. while( USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  163. {};
  164. GPIO_ResetBits(GPIOA,GPIO_Pin_8);//ENABLE 485 Receive
  165. }
  166. OSIntExit();
  167. }
  168. void DMA1_Channel7_IRQHandler(void)
  169. {
  170. OSIntEnter();
  171. if( DMA_GetFlagStatus(DMA1_FLAG_TC7) == SET )
  172. {
  173. USART_DMACmd(USART2, USART_DMAReq_Tx, DISABLE);
  174. DMA_Cmd (DMA1_Channel7, DISABLE);//USART2 TX
  175. DMA_ClearFlag(DMA1_FLAG_TC7);
  176. while( USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET)
  177. {};
  178. GPIO_ResetBits(GPIOA,GPIO_Pin_1); //ENABLE 485 Receive
  179. }
  180. OSIntExit();
  181. }
  182. //void USART1_IRQHandler(void) //串口1中断服务程序
  183. //{
  184. // OS_ERR err;
  185. // OSIntEnter();
  186. //
  187. // if(USART_GetITStatus(USART1, USART_IT_IDLE) == SET) //检测到总线空闲
  188. // {
  189. // USART1_RxBUF.len = USATR1_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel5);
  190. // OSTaskQPost ((OS_TCB *)&AppTask_OTA_HandleTCB, //目标任务的控制块
  191. // (void *)USART1_RxBUF.buff, //消息内容
  192. // (OS_MSG_SIZE )USART1_RxBUF.len, //消息长度
  193. // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
  194. // (OS_ERR *)&err); //返回错误类型
  195. // DMA_Cmd (DMA1_Channel5, DISABLE);
  196. // DMA_SetCurrDataCounter(DMA1_Channel5, USATR1_RX_SIZE);
  197. // DMA_Cmd (DMA1_Channel5, ENABLE);
  198. // USART_ClearFlag(USART1, USART_FLAG_RXNE);
  199. // USART_GetITStatus(USART1, USART_IT_IDLE); //Clear IDLE Flag
  200. // USART_ReceiveData(USART1); //Clear IDLE Flag
  201. // }
  202. //
  203. // OSIntExit();
  204. //}
  205. //void USART2_IRQHandler(void)
  206. //{
  207. // OS_ERR err;
  208. // OSIntEnter();
  209. // if(USART_GetITStatus(USART2, USART_IT_IDLE) == SET)
  210. // {
  211. // ErrFlag = 0;//计数清零
  212. //
  213. // USART2_RxBUF.len = USATR2_RX_SIZE - DMA_GetCurrDataCounter(DMA1_Channel6);
  214. //
  215. // OSTaskQPost ((OS_TCB *)&AppTask_Server_ComTCB, //目标任务的控制块
  216. // (void *)USART2_RxBUF.buff, //消息内容
  217. // (OS_MSG_SIZE )USART2_RxBUF.len, //消息长度
  218. // (OS_OPT )OS_OPT_POST_FIFO, //发布到任务消息队列的入口端
  219. // (OS_ERR *)&err); //返回错误类型
  220. // DMA_Cmd (DMA1_Channel6, DISABLE);
  221. // DMA_SetCurrDataCounter(DMA1_Channel6, USATR2_RX_SIZE);
  222. // DMA_Cmd (DMA1_Channel6, ENABLE);
  223. //
  224. // USART_ClearFlag(USART2, USART_FLAG_RXNE);
  225. // USART_GetITStatus(USART2, USART_IT_IDLE); //Clear IDLE Flag
  226. // USART_ReceiveData(USART2); //Clear IDLE Flag
  227. // }
  228. //
  229. // OSIntExit();
  230. //}
  231. /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/