stm32f4xx_it.c 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. /**
  2. ******************************************************************************
  3. * @file stm32f4xx_it.c
  4. * @author MCD Application Team
  5. * @version V1.0.0
  6. * @date 31-October-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; Portions COPYRIGHT 2011 STMicroelectronics</center></h2>
  21. ******************************************************************************
  22. */
  23. /**
  24. ******************************************************************************
  25. * <h2><center>&copy; Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.</center></h2>
  26. * @file stm32f4xx_it.c
  27. * @author CMP Team
  28. * @version V1.0.0
  29. * @date 28-December-2012
  30. * @brief Main Interrupt Service Routines.
  31. * This file provides template for all exceptions handler and
  32. * peripherals interrupt service routine.
  33. * Modified to support the STM32F4DISCOVERY, STM32F4DIS-BB and
  34. * STM32F4DIS-LCD modules.
  35. ******************************************************************************
  36. * @attention
  37. *
  38. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  39. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  40. * TIME. AS A RESULT, Embest SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
  41. * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
  42. * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
  43. * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  44. ******************************************************************************
  45. */
  46. /* Includes ------------------------------------------------------------------*/
  47. #include "stm32f4xx_it.h"
  48. #include "main.h"
  49. #include "stm32f4x7_eth.h"
  50. /* Scheduler includes */
  51. #include "FreeRTOS.h"
  52. #include "task.h"
  53. #include "queue.h"
  54. #include "semphr.h"
  55. extern SemaphoreHandle_t s_xSemaphore;
  56. /* lwip includes */
  57. #include "lwip/sys.h"
  58. #ifdef PRINTF_STDLIB
  59. #include <stdio.h>
  60. #endif
  61. #ifdef PRINTF_CUSTOM
  62. #include "tinystdio.h"
  63. #endif
  64. /* Private typedef -----------------------------------------------------------*/
  65. /* Private define ------------------------------------------------------------*/
  66. /* Private macro -------------------------------------------------------------*/
  67. /* Private variables ---------------------------------------------------------*/
  68. extern SemaphoreHandle_t s_xSemaphore;
  69. /* Private function prototypes -----------------------------------------------*/
  70. extern void xPortSysTickHandler(void);
  71. /* Private functions ---------------------------------------------------------*/
  72. /******************************************************************************/
  73. /* Cortex-M4 Processor Exceptions Handlers */
  74. /******************************************************************************/
  75. /**
  76. * @brief This function handles NMI exception.
  77. * @param None
  78. * @retval None
  79. */
  80. void NMI_Handler(void)
  81. {
  82. /* Сбросить флаг системы контроля CSS */
  83. if (RCC->CIR & RCC_CIR_CSSF) RCC->CIR |= RCC_CIR_CSSC;
  84. printf("NMI exception\r\n");
  85. NVIC_SystemReset();
  86. }
  87. /**
  88. * @brief This function handles Hard Fault exception.
  89. * @param None
  90. * @retval None
  91. */
  92. void HardFault_Handler(void)
  93. {
  94. printf("Hardfault\r\n");
  95. //NVIC_SystemReset();
  96. /* Go to infinite loop when Hard Fault exception occurs */
  97. while (1)
  98. {
  99. }
  100. }
  101. /**
  102. * @brief This function handles Memory Manage exception.
  103. * @param None
  104. * @retval None
  105. */
  106. void MemManage_Handler(void)
  107. {
  108. /* Go to infinite loop when Memory Manage exception occurs */
  109. while (1)
  110. {
  111. }
  112. }
  113. /**
  114. * @brief This function handles Bus Fault exception.
  115. * @param None
  116. * @retval None
  117. */
  118. void BusFault_Handler(void)
  119. {
  120. /* Go to infinite loop when Bus Fault exception occurs */
  121. while (1)
  122. {
  123. }
  124. }
  125. /**
  126. * @brief This function handles Usage Fault exception.
  127. * @param None
  128. * @retval None
  129. */
  130. void UsageFault_Handler(void)
  131. {
  132. /* Go to infinite loop when Usage Fault exception occurs */
  133. while (1)
  134. {
  135. }
  136. }
  137. /**
  138. * @brief This function handles Debug Monitor exception.
  139. * @param None
  140. * @retval None
  141. */
  142. void DebugMon_Handler(void)
  143. {
  144. }
  145. /**
  146. * @brief This function handles ethernet DMA interrupt request.
  147. * @param None
  148. * @retval None
  149. */
  150. void ETH_IRQHandler(void)
  151. {
  152. #if 1
  153. portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
  154. /* Frame received */
  155. if ( ETH_GetDMAFlagStatus(ETH_DMA_FLAG_R) == SET)
  156. {
  157. /* Give the semaphore to wakeup LwIP task */
  158. xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken );
  159. }
  160. /* Clear the interrupt flags. */
  161. /* Clear the Eth DMA Rx IT pending bits */
  162. ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
  163. ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
  164. // Switch tasks if necessary. */
  165. if( xHigherPriorityTaskWoken != pdFALSE )
  166. {
  167. portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
  168. }
  169. #endif
  170. }
  171. /**
  172. * @brief This function handles SDIO global interrupt request.
  173. * @param None
  174. * @retval None
  175. */
  176. void SDIO_IRQHandler(void)
  177. {
  178. /* Process All SDIO Interrupt Sources */
  179. //SD_ProcessIRQSrc();
  180. }
  181. /**
  182. * @brief This function handles DMA2 Stream3 or DMA2 Stream6 global interrupts
  183. * requests.
  184. * @param None
  185. * @retval None
  186. */
  187. void SD_SDIO_DMA_IRQHANDLER(void)
  188. {
  189. /* Process DMA2 Stream3 or DMA2 Stream6 Interrupt Sources */
  190. //SD_ProcessDMAIRQ();
  191. }
  192. /******************************************************************************/
  193. /* STM32F4xx Peripherals Interrupt Handlers */
  194. /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
  195. /* available peripheral interrupt handler's name please refer to the startup */
  196. /* file (startup_stm32f4xx.s). */
  197. /******************************************************************************/
  198. /**
  199. * @brief This function handles PPP interrupt request.
  200. * @param None
  201. * @retval None
  202. */
  203. /*void PPP_IRQHandler(void)
  204. {
  205. }*/
  206. /*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/