stm32f4xx_it.c 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  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. /* lwip includes */
  55. #include "sys.h"
  56. //#include "led.h"
  57. //#include <stdio.h>
  58. /* Private typedef -----------------------------------------------------------*/
  59. /* Private define ------------------------------------------------------------*/
  60. /* Private macro -------------------------------------------------------------*/
  61. /* Private variables ---------------------------------------------------------*/
  62. extern SemaphoreHandle_t s_xSemaphore;
  63. /* Private function prototypes -----------------------------------------------*/
  64. extern void xPortSysTickHandler(void);
  65. /* Private functions ---------------------------------------------------------*/
  66. /******************************************************************************/
  67. /* Cortex-M4 Processor Exceptions Handlers */
  68. /******************************************************************************/
  69. /**
  70. * @brief This function handles NMI exception.
  71. * @param None
  72. * @retval None
  73. */
  74. void NMI_Handler(void)
  75. {
  76. // LED_On(RED_STATUS);
  77. /* Сбросить флаг системы контроля CSS */
  78. if (RCC->CIR & RCC_CIR_CSSF) RCC->CIR |= RCC_CIR_CSSC;
  79. // DBG printf("NMI exception\r\n");
  80. vTaskDelay(1010);
  81. NVIC_SystemReset();
  82. }
  83. /**
  84. * @brief This function handles Hard Fault exception.
  85. * @param None
  86. * @retval None
  87. */
  88. void HardFault_Handler(void)
  89. {
  90. DBG printf("Hardfault\r\n");
  91. /* Блокируем управление ключем на тау секунд*/
  92. /* TODO Remove if tested. Not sure why we need gpio control here */
  93. /* vTaskDelay shouldn't be used in ISR */
  94. //IO_KeyBlockOn();
  95. //vTaskDelay(1010);
  96. //NVIC_SystemReset();
  97. /* Go to infinite loop when Hard Fault exception occurs */
  98. /* Print SCB register */
  99. /* DBG printf("SCB: 0x%x\n\r", SCB->CFSR);
  100. DBG printf("UFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_USGFAULTSR_Msk) >> SCB_CFSR_USGFAULTSR_Pos);
  101. DBG printf("BFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_BUSFAULTSR_Msk) >> SCB_CFSR_BUSFAULTSR_Pos);
  102. DBG printf("MMFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_MEMFAULTSR_Msk) >> SCB_CFSR_MEMFAULTSR_Pos);*/
  103. while (1)
  104. {
  105. }
  106. }
  107. /**
  108. * @brief This function handles Memory Manage exception.
  109. * @param None
  110. * @retval None
  111. */
  112. void MemManage_Handler(void)
  113. {
  114. /* Go to infinite loop when Memory Manage exception occurs */
  115. while (1)
  116. {
  117. }
  118. }
  119. /**
  120. * @brief This function handles Bus Fault exception.
  121. * @param None
  122. * @retval None
  123. */
  124. void BusFault_Handler(void)
  125. {
  126. /* Go to infinite loop when Bus Fault exception occurs */
  127. while (1)
  128. {
  129. }
  130. }
  131. /**
  132. * @brief This function handles Usage Fault exception.
  133. * @param None
  134. * @retval None
  135. */
  136. void UsageFault_Handler(void)
  137. {
  138. /* Go to infinite loop when Usage Fault exception occurs */
  139. while (1)
  140. {
  141. }
  142. }
  143. /**
  144. * @brief This function handles Debug Monitor exception.
  145. * @param None
  146. * @retval None
  147. */
  148. void DebugMon_Handler(void)
  149. {
  150. }
  151. /**
  152. * @brief This function handles ethernet DMA interrupt request.
  153. * @param None
  154. * @retval None
  155. */
  156. void ETH_IRQHandler(void)
  157. {
  158. #if 1
  159. portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
  160. /* Frame received */
  161. if ( ETH_GetDMAFlagStatus(ETH_DMA_FLAG_R) == SET)
  162. {
  163. /* Give the semaphore to wakeup LwIP task */
  164. xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken );
  165. }
  166. /* Clear the interrupt flags. */
  167. /* Clear the Eth DMA Rx IT pending bits */
  168. ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
  169. ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
  170. // Switch tasks if necessary. */
  171. if( xHigherPriorityTaskWoken != pdFALSE )
  172. {
  173. portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
  174. }
  175. #endif
  176. }
  177. /******************************************************************************/
  178. /* STM32F4xx Peripherals Interrupt Handlers */
  179. /* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
  180. /* available peripheral interrupt handler's name please refer to the startup */
  181. /* file (startup_stm32f4xx.s). */
  182. /******************************************************************************/
  183. /**
  184. * @brief This function handles PPP interrupt request.
  185. * @param None
  186. * @retval None
  187. */
  188. /*void PPP_IRQHandler(void)
  189. {
  190. }*/
  191. /*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/