text: /**
  	******************************************************************************
  	* @file    Project/GPIO/GPIO_EXIT/stm32f4xx_it.c
  	* @author  Geunhyeok Lee
  	* @version V0.0.1
  	* @date    06-February-2022
  	* @brief   Main Interrupt Service Routines.
  	******************************************************************************
  	*/
  
  /* Includes ------------------------------------------------------------------*/
  #include "stm32f4xx_it.h"
  static char rx_buffer[RX_BUF_LEN] = {0};
  CircularBuffer rx_circular_buffer = {rx_buffer, RX_BUF_LEN, 0, 0, 0};
  
  /** @addtogroup Template_Project
    * @{
    */
  
  /* Private typedef -----------------------------------------------------------*/
  /* Private define ------------------------------------------------------------*/
  /* Private macro -------------------------------------------------------------*/
  /* Private variables ---------------------------------------------------------*/
  /* Private function prototypes -----------------------------------------------*/
  /* Private functions ---------------------------------------------------------*/
  
  /******************************************************************************/
  /*            Cortex-M4 Processor Exceptions Handlers                         */
  /******************************************************************************/
  
  /**
    * @brief  This function handles NMI exception.
    * @param  None
    * @retval None
    */
  void NMI_Handler(void)
  {
  }
  
  /**
    * @brief  This function handles Hard Fault exception.
    * @param  None
    * @retval None
    */
  void HardFault_Handler(void)
  {
    /* Go to infinite loop when Hard Fault exception occurs */
    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 SVCall exception.
    * @param  None
    * @retval None
    */
  __weak void SVC_Handler(void)
  {
  }
  
  /**
    * @brief  This function handles Debug Monitor exception.
    * @param  None
    * @retval None
    */
  void DebugMon_Handler(void)
  {
  }
  
  /**
    * @brief  This function handles PendSVC exception.
    * @param  None
    * @retval None
    */
  __weak void PendSV_Handler(void)
  {
  }
  
  /**
    * @brief  This function handles SysTick Handler.
    * @param  None
    * @retval None
    */
  __weak void SysTick_Handler(void)
  {
    	
  }
  
  /******************************************************************************/
  /*                 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)
  {
  }*/
  
  /**
    * @brief  This function handles USART2 interrupt request.
    * @param  None
    * @retval None
    */ 
  void USART2_IRQHandler(void)
  {
  	if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  	{
  		USART_ClearITPendingBit(USART2, USART_IT_RXNE);
  		PushCircularBuffer(&rx_circular_buffer, USART2->DR);
  	}
  }
  
  /**
    * @brief  This function handles External0 interrupt request.
    * @param  None
    * @retval None
    */ 
  void EXTI0_IRQHandler(void)
  {
  	if(EXTI_GetITStatus(EXTI_Line0) != RESET)
  	{
  		EXTI_ClearITPendingBit(EXTI_Line0);
  		GPIO_ToggleBits(GPIOD, GPIO_Pin_12);
  	}
  }
  
  /**
    * @}
    */ 
  
  
  /******************************** END OF FILE *********************************/