|  |  |  | /**
 | 
					
						
							|  |  |  |   ****************************************************************************** | 
					
						
							|  |  |  |   * @file    stm32f4xx_it.c | 
					
						
							|  |  |  |   * @brief   Interrupt Service Routines. | 
					
						
							|  |  |  |   ****************************************************************************** | 
					
						
							|  |  |  |   * | 
					
						
							|  |  |  |   * COPYRIGHT(c) 2015 STMicroelectronics | 
					
						
							|  |  |  |   * | 
					
						
							|  |  |  |   * Redistribution and use in source and binary forms, with or without modification, | 
					
						
							|  |  |  |   * are permitted provided that the following conditions are met: | 
					
						
							|  |  |  |   *   1. Redistributions of source code must retain the above copyright notice, | 
					
						
							|  |  |  |   *      this list of conditions and the following disclaimer. | 
					
						
							|  |  |  |   *   2. Redistributions in binary form must reproduce the above copyright notice, | 
					
						
							|  |  |  |   *      this list of conditions and the following disclaimer in the documentation | 
					
						
							|  |  |  |   *      and/or other materials provided with the distribution. | 
					
						
							|  |  |  |   *   3. Neither the name of STMicroelectronics nor the names of its contributors | 
					
						
							|  |  |  |   *      may be used to endorse or promote products derived from this software | 
					
						
							|  |  |  |   *      without specific prior written permission. | 
					
						
							|  |  |  |   * | 
					
						
							|  |  |  |   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
					
						
							|  |  |  |   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
					
						
							|  |  |  |   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 
					
						
							|  |  |  |   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | 
					
						
							|  |  |  |   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 
					
						
							|  |  |  |   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | 
					
						
							|  |  |  |   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | 
					
						
							|  |  |  |   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | 
					
						
							|  |  |  |   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
					
						
							|  |  |  |   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
					
						
							|  |  |  |   * | 
					
						
							|  |  |  |   ****************************************************************************** | 
					
						
							|  |  |  |   * | 
					
						
							|  |  |  |   * Modifications by Robert Fisk | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Includes ------------------------------------------------------------------*/ | 
					
						
							|  |  |  | #include "stm32f4xx_hal.h"
 | 
					
						
							|  |  |  | #include "stm32f4xx.h"
 | 
					
						
							|  |  |  | #include "interrupts.h"
 | 
					
						
							|  |  |  | #include "led.h"
 | 
					
						
							|  |  |  | #include "board_config.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* External variables --------------------------------------------------------*/ | 
					
						
							|  |  |  | extern HCD_HandleTypeDef hhcd_USB_OTG_FS; | 
					
						
							|  |  |  | extern DMA_HandleTypeDef hdma_spi1_rx; | 
					
						
							|  |  |  | extern DMA_HandleTypeDef hdma_spi1_tx; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern volatile uint8_t UsbInterruptHasHappened; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uint8_t BusFaultAllowed = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /******************************************************************************/ | 
					
						
							|  |  |  | /*            Cortex-M4 Processor Interruption and Exception Handlers         */  | 
					
						
							|  |  |  | /******************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  | * @brief This function handles System tick timer. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | void SysTick_Handler(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   HAL_IncTick(); | 
					
						
							|  |  |  |   LED_DoBlinks(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /******************************************************************************/ | 
					
						
							|  |  |  | /* STM32F4xx Peripheral Interrupt Handlers                                    */ | 
					
						
							|  |  |  | /* Add here the Interrupt Handlers for the used peripherals.                  */ | 
					
						
							|  |  |  | /* For the available peripheral interrupt handler names,                      */ | 
					
						
							|  |  |  | /* please refer to the startup file (startup_stm32f4xx.s).                    */ | 
					
						
							|  |  |  | /******************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void DMA2_Stream2_IRQHandler(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   HAL_DMA_IRQHandler(&hdma_spi1_rx); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void DMA2_Stream3_IRQHandler(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   HAL_DMA_IRQHandler(&hdma_spi1_tx); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void OTG_FS_IRQHandler(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     HAL_HCD_IRQHandler(&hhcd_USB_OTG_FS); | 
					
						
							|  |  |  |     UsbInterruptHasHappened = 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //This weird stuff is required when disabling flash writes.
 | 
					
						
							|  |  |  | //The deliberate flash lockout will cause a bus fault that we need to process.
 | 
					
						
							|  |  |  | void EnableOneBusFault(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     //It should not be enabled already!
 | 
					
						
							|  |  |  |     if (BusFaultAllowed) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         while (1); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     SCB->SHCSR = SCB_SHCSR_BUSFAULTENA_Msk; | 
					
						
							|  |  |  |     BusFaultAllowed = 1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void BusFault_Handler(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (BusFaultAllowed) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         BusFaultAllowed = 0; | 
					
						
							|  |  |  |         return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     while (1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |