/* USER CODE BEGIN Header */
/**
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @ file stm32f1xx_it . c
* @ brief Interrupt Service Routines .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @ attention
*
* Copyright ( c ) 2023 STMicroelectronics .
* All rights reserved .
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component .
* If no LICENSE file comes with this software , it is provided AS - IS .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
# include "main.h"
# include "stm32f1xx_it.h"
# include "FreeRTOS.h"
# include "task.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
# include "app_temp.h"
# include "app_knob.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN TD */
/* USER CODE END TD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
/* USER CODE BEGIN EV */
bool EE_NMI_Callback ( ) ;
/* USER CODE END EV */
/******************************************************************************/
/* Cortex-M3 Processor Interruption and Exception Handlers */
/******************************************************************************/
/**
* @ brief This function handles Non maskable interrupt .
*/
void NMI_Handler ( void )
{
/* USER CODE BEGIN NonMaskableInt_IRQn 0 */
if ( EE_NMI_Callback ( ) ) {
return ;
}
/* USER CODE END NonMaskableInt_IRQn 0 */
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
while ( 1 )
{
}
/* USER CODE END NonMaskableInt_IRQn 1 */
}
/**
* @ brief This function handles Hard fault interrupt .
*/
void HardFault_Handler ( void )
{
/* USER CODE BEGIN HardFault_IRQn 0 */
PUTS ( " HardFault_Handler \r \n " ) ;
/* USER CODE END HardFault_IRQn 0 */
while ( 1 )
{
/* USER CODE BEGIN W1_HardFault_IRQn 0 */
/* USER CODE END W1_HardFault_IRQn 0 */
}
}
/**
* @ brief This function handles Memory management fault .
*/
void MemManage_Handler ( void )
{
/* USER CODE BEGIN MemoryManagement_IRQn 0 */
PUTS ( " MemManage_Handler \r \n " ) ;
/* USER CODE END MemoryManagement_IRQn 0 */
while ( 1 )
{
/* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
/* USER CODE END W1_MemoryManagement_IRQn 0 */
}
}
/**
* @ brief This function handles Prefetch fault , memory access fault .
*/
void BusFault_Handler ( void )
{
/* USER CODE BEGIN BusFault_IRQn 0 */
PUTS ( " BusFault_Handler \r \n " ) ;
/* USER CODE END BusFault_IRQn 0 */
while ( 1 )
{
/* USER CODE BEGIN W1_BusFault_IRQn 0 */
/* USER CODE END W1_BusFault_IRQn 0 */
}
}
/**
* @ brief This function handles Undefined instruction or illegal state .
*/
void UsageFault_Handler ( void )
{
/* USER CODE BEGIN UsageFault_IRQn 0 */
PUTS ( " UsageFault_Handler \r \n " ) ;
/* USER CODE END UsageFault_IRQn 0 */
while ( 1 )
{
/* USER CODE BEGIN W1_UsageFault_IRQn 0 */
/* USER CODE END W1_UsageFault_IRQn 0 */
}
}
/**
* @ brief This function handles Debug monitor .
*/
void DebugMon_Handler ( void )
{
/* USER CODE BEGIN DebugMonitor_IRQn 0 */
/* USER CODE END DebugMonitor_IRQn 0 */
/* USER CODE BEGIN DebugMonitor_IRQn 1 */
/* USER CODE END DebugMonitor_IRQn 1 */
}
/**
* @ brief This function handles System tick timer .
*/
void SysTick_Handler ( void )
{
/* USER CODE BEGIN SysTick_IRQn 0 */
/* USER CODE END SysTick_IRQn 0 */
# if (INCLUDE_xTaskGetSchedulerState == 1 )
if ( xTaskGetSchedulerState ( ) ! = taskSCHEDULER_NOT_STARTED )
{
# endif /* INCLUDE_xTaskGetSchedulerState */
xPortSysTickHandler ( ) ;
# if (INCLUDE_xTaskGetSchedulerState == 1 )
}
# endif /* INCLUDE_xTaskGetSchedulerState */
/* USER CODE BEGIN SysTick_IRQn 1 */
/* USER CODE END SysTick_IRQn 1 */
}
/******************************************************************************/
/* STM32F1xx 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_stm32f1xx.s). */
/******************************************************************************/
/**
* @ brief This function handles DMA1 channel1 global interrupt .
*/
void DMA1_Channel1_IRQHandler ( void )
{
/* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
if ( LL_DMA_IsActiveFlag_TC1 ( DMA1 ) ) {
app_temp_adc_eos ( ) ;
LL_DMA_ClearFlag_TC1 ( DMA1 ) ;
}
/* USER CODE END DMA1_Channel1_IRQn 0 */
/* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
/* USER CODE END DMA1_Channel1_IRQn 1 */
}
/**
* @ brief This function handles EXTI line [ 9 : 5 ] interrupts .
*/
void EXTI9_5_IRQHandler ( void )
{
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
bool state = LL_GPIO_IsInputPinSet ( KNOB_PUSH_GPIO_Port , KNOB_PUSH_Pin ) ;
/* USER CODE END EXTI9_5_IRQn 0 */
if ( LL_EXTI_IsActiveFlag_0_31 ( LL_EXTI_LINE_8 ) ! = RESET )
{
LL_EXTI_ClearFlag_0_31 ( LL_EXTI_LINE_8 ) ;
/* USER CODE BEGIN LL_EXTI_LINE_8 */
app_knob_push_isr ( 0 = = state ) ;
/* USER CODE END LL_EXTI_LINE_8 */
}
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
/* USER CODE END EXTI9_5_IRQn 1 */
}
/**
* @ brief This function handles TIM4 global interrupt .
*/
void TIM4_IRQHandler ( void )
{
/* USER CODE BEGIN TIM4_IRQn 0 */
if ( LL_TIM_IsActiveFlag_CC1 ( TIM4 ) | | LL_TIM_IsActiveFlag_CC2 ( TIM4 ) ) {
LL_TIM_ClearFlag_CC1 ( TIM4 ) ;
LL_TIM_ClearFlag_CC2 ( TIM4 ) ;
app_knob_turn_isr ( ) ;
}
/* USER CODE END TIM4_IRQn 0 */
/* USER CODE BEGIN TIM4_IRQn 1 */
/* USER CODE END TIM4_IRQn 1 */
}
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */