|
@@ -0,0 +1,215 @@
|
|
|
+/**
|
|
|
+ ******************************************************************************
|
|
|
+ * @file stm32f4xx_it.c
|
|
|
+ * @author MCD Application Team
|
|
|
+ * @version V1.0.0
|
|
|
+ * @date 31-October-2011
|
|
|
+ * @brief Main Interrupt Service Routines.
|
|
|
+ * This file provides template for all exceptions handler and
|
|
|
+ * peripherals interrupt service routine.
|
|
|
+ ******************************************************************************
|
|
|
+ * @attention
|
|
|
+ *
|
|
|
+ * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
|
|
+ * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
|
|
|
+ * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
|
|
|
+ * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
|
|
|
+ * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
|
|
|
+ * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
|
|
+ *
|
|
|
+ * <h2><center>© Portions COPYRIGHT 2011 STMicroelectronics</center></h2>
|
|
|
+ ******************************************************************************
|
|
|
+ */
|
|
|
+/**
|
|
|
+ ******************************************************************************
|
|
|
+ * <h2><center>© Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.</center></h2>
|
|
|
+ * @file stm32f4xx_it.c
|
|
|
+ * @author CMP Team
|
|
|
+ * @version V1.0.0
|
|
|
+ * @date 28-December-2012
|
|
|
+ * @brief Main Interrupt Service Routines.
|
|
|
+ * This file provides template for all exceptions handler and
|
|
|
+ * peripherals interrupt service routine.
|
|
|
+ * Modified to support the STM32F4DISCOVERY, STM32F4DIS-BB and
|
|
|
+ * STM32F4DIS-LCD modules.
|
|
|
+ ******************************************************************************
|
|
|
+ * @attention
|
|
|
+ *
|
|
|
+ * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
|
|
|
+ * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
|
|
|
+ * TIME. AS A RESULT, Embest SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
|
|
|
+ * OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
|
|
|
+ * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
|
|
|
+ * CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
|
|
|
+ ******************************************************************************
|
|
|
+ */
|
|
|
+/* Includes ------------------------------------------------------------------*/
|
|
|
+#include "stm32f4xx_it.h"
|
|
|
+#include "main.h"
|
|
|
+#include "stm32f4x7_eth.h"
|
|
|
+
|
|
|
+/* Scheduler includes */
|
|
|
+#include "FreeRTOS.h"
|
|
|
+#include "task.h"
|
|
|
+#include "queue.h"
|
|
|
+
|
|
|
+/* lwip includes */
|
|
|
+#include "sys.h"
|
|
|
+
|
|
|
+//#include "led.h"
|
|
|
+//#include <stdio.h>
|
|
|
+/* Private typedef -----------------------------------------------------------*/
|
|
|
+/* Private define ------------------------------------------------------------*/
|
|
|
+/* Private macro -------------------------------------------------------------*/
|
|
|
+/* Private variables ---------------------------------------------------------*/
|
|
|
+extern SemaphoreHandle_t s_xSemaphore;
|
|
|
+/* Private function prototypes -----------------------------------------------*/
|
|
|
+extern void xPortSysTickHandler(void);
|
|
|
+/* Private functions ---------------------------------------------------------*/
|
|
|
+
|
|
|
+/******************************************************************************/
|
|
|
+/* Cortex-M4 Processor Exceptions Handlers */
|
|
|
+/******************************************************************************/
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief This function handles NMI exception.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+void NMI_Handler(void)
|
|
|
+{
|
|
|
+ // LED_On(RED_STATUS);
|
|
|
+
|
|
|
+ /* Сбросить флаг системы контроля CSS */
|
|
|
+ if (RCC->CIR & RCC_CIR_CSSF) RCC->CIR |= RCC_CIR_CSSC;
|
|
|
+
|
|
|
+ // DBG printf("NMI exception\r\n");
|
|
|
+
|
|
|
+ vTaskDelay(1010);
|
|
|
+ NVIC_SystemReset();
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief This function handles Hard Fault exception.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+void HardFault_Handler(void)
|
|
|
+{
|
|
|
+ DBG printf("Hardfault\r\n");
|
|
|
+ /* Блокируем управление ключем на тау секунд*/
|
|
|
+ /* TODO Remove if tested. Not sure why we need gpio control here */
|
|
|
+ /* vTaskDelay shouldn't be used in ISR */
|
|
|
+ //IO_KeyBlockOn();
|
|
|
+ //vTaskDelay(1010);
|
|
|
+ //NVIC_SystemReset();
|
|
|
+ /* Go to infinite loop when Hard Fault exception occurs */
|
|
|
+
|
|
|
+ /* Print SCB register */
|
|
|
+ /* DBG printf("SCB: 0x%x\n\r", SCB->CFSR);
|
|
|
+ DBG printf("UFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_USGFAULTSR_Msk) >> SCB_CFSR_USGFAULTSR_Pos);
|
|
|
+ DBG printf("BFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_BUSFAULTSR_Msk) >> SCB_CFSR_BUSFAULTSR_Pos);
|
|
|
+ DBG printf("MMFSR: 0x%x\n\r", (SCB->CFSR & SCB_CFSR_MEMFAULTSR_Msk) >> SCB_CFSR_MEMFAULTSR_Pos);*/
|
|
|
+
|
|
|
+ while (1)
|
|
|
+ {
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief This function handles Memory Manage exception.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+void MemManage_Handler(void)
|
|
|
+{
|
|
|
+ /* Go to infinite loop when Memory Manage exception occurs */
|
|
|
+ while (1)
|
|
|
+ {
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief This function handles Bus Fault exception.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+void BusFault_Handler(void)
|
|
|
+{
|
|
|
+ /* Go to infinite loop when Bus Fault exception occurs */
|
|
|
+ while (1)
|
|
|
+ {
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief This function handles Usage Fault exception.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+void UsageFault_Handler(void)
|
|
|
+{
|
|
|
+ /* Go to infinite loop when Usage Fault exception occurs */
|
|
|
+ while (1)
|
|
|
+ {
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief This function handles Debug Monitor exception.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+void DebugMon_Handler(void)
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief This function handles ethernet DMA interrupt request.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+void ETH_IRQHandler(void)
|
|
|
+{
|
|
|
+#if 1
|
|
|
+ portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
|
|
|
+
|
|
|
+ /* Frame received */
|
|
|
+ if ( ETH_GetDMAFlagStatus(ETH_DMA_FLAG_R) == SET)
|
|
|
+ {
|
|
|
+ /* Give the semaphore to wakeup LwIP task */
|
|
|
+ xSemaphoreGiveFromISR( s_xSemaphore, &xHigherPriorityTaskWoken );
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Clear the interrupt flags. */
|
|
|
+ /* Clear the Eth DMA Rx IT pending bits */
|
|
|
+ ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
|
|
|
+ ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
|
|
|
+
|
|
|
+ // Switch tasks if necessary. */
|
|
|
+ if( xHigherPriorityTaskWoken != pdFALSE )
|
|
|
+ {
|
|
|
+ portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
|
|
|
+ }
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/******************************************************************************/
|
|
|
+/* STM32F4xx Peripherals Interrupt Handlers */
|
|
|
+/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */
|
|
|
+/* available peripheral interrupt handler's name please refer to the startup */
|
|
|
+/* file (startup_stm32f4xx.s). */
|
|
|
+/******************************************************************************/
|
|
|
+/**
|
|
|
+ * @brief This function handles PPP interrupt request.
|
|
|
+ * @param None
|
|
|
+ * @retval None
|
|
|
+ */
|
|
|
+/*void PPP_IRQHandler(void)
|
|
|
+{
|
|
|
+}*/
|
|
|
+
|
|
|
+
|
|
|
+/*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/
|