/*! * \file system_it_xinc.c * * \brief Target system interruption implementation * * \copyright Revised BSD License, see section \ref LICENSE. * * \code * * _ __ _ ________ _ * | |/ /(_)___ / ____/ /_ (_)___ * | // / __ \/ / / __ \/ / __ \ * / |/ / / / / /___/ / / / / /_/ / * /_/|_/_/_/ /_/\____/_/ /_/_/ .___/ * /_/ * (C) 2022-2025 XinChip * * \endcode * * \author ( XinChip ) Alex-J * * \author ( XinChip ) */ /*----------------------------------------------------------------------------------- INCLUDE HEADE FILES ------------------------------------------------------------------------------------*/ #include "system_it_xinc.h" /*------------------------------------------------------------------------------------ Func Prototype -------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------ Functions -------------------------------------------------------------------------------------*/ /** **************************************************************************************** * @brief This function handles NMI exception. * * @param[in] * @param[in] **************************************************************************************** */ void NMI_Handler(void) { /* USER CODE BEGIN NonMaskableInt_IRQn */ DEBUG("%s\n", __func__); /* USER CODE END NonMaskableInt_IRQn */ while (1) { } } /** **************************************************************************************** * @brief This function handles Hard Fault exception. * * @param[in] * @param[in] **************************************************************************************** */ void HardFault_Handler(void) { /* USER CODE BEGIN HardFault_IRQn */ DEBUG("%s\n", __func__); /* USER CODE END HardFault_IRQn */ while (1) { } } /** **************************************************************************************** * @brief This function handles Memory Manage exception. * * @param[in] * @param[in] **************************************************************************************** */ void MemManage_Handler(void) { /* USER CODE BEGIN */ DEBUG("%s\n", __func__); /* USER CODE END */ while (1) { } } /** **************************************************************************************** * @brief This function handles Bus Fault exception. * * @param[in] * @param[in] **************************************************************************************** */ void BusFault_Handler(void) { /* USER CODE BEGIN */ DEBUG("%s\n", __func__); /* USER CODE END */ while (1) { } } /** **************************************************************************************** * @brief This function handles Usage Fault exception. * * @param[in] * @param[in] **************************************************************************************** */ void UsageFault_Handler(void) { /* USER CODE BEGIN */ DEBUG("%s\n", __func__); /* USER CODE END */ while (1) { } } /** **************************************************************************************** * @brief This function handles SVCall exception. * * @param[in] * @param[in] **************************************************************************************** */ void SVC_Handler(void) { /* USER CODE BEGIN SVCall_IRQn */ DEBUG("%s\n", __func__); /* USER CODE END SVCall_IRQn */ while (1) { } } /** **************************************************************************************** * @brief This function handles Debug Monitor exception. * * @param[in] * @param[in] **************************************************************************************** */ void DebugMon_Handler(void) { /* USER CODE BEGIN */ DEBUG("%s\n", __func__); /* USER CODE END */ while (1) { } } /** **************************************************************************************** * @brief This function handles PendSVC exception. * * @param[in] * @param[in] **************************************************************************************** */ void PendSV_Handler(void) { /* USER CODE BEGIN PendSV_IRQn */ DEBUG("%s\n", __func__); /* USER CODE END PendSV_IRQn */ while (1) { } } /****************************** Hard Fault Handler Functions *******************************/ /*------------------------------------------------------------------------------------ Private Functions -------------------------------------------------------------------------------------*/ void HardFault_Handler_c(unsigned int * HardFault_args) { /*栈帧里面内容:*/ unsigned int stack_r0; //压栈的 R0 unsigned int stack_r1; //压栈的 R1 unsigned int stack_r2; //压栈的 R2 unsigned int stack_r3; //压栈的 R3 unsigned int stack_r12; //压栈的 R12 unsigned int stack_lr; //压栈的 lr unsigned int stack_pc; //压栈的 pc unsigned int stack_psr; //压栈的 psr stack_r0 = ((unsigned int)HardFault_args[0]); stack_r1 = ((unsigned int)HardFault_args[1]); stack_r2 = ((unsigned int)HardFault_args[2]); stack_r3 = ((unsigned int)HardFault_args[3]); stack_r12 = ((unsigned int)HardFault_args[4]); stack_lr = ((unsigned int)HardFault_args[5]); stack_pc = ((unsigned int)HardFault_args[6]); stack_psr = ((unsigned int)HardFault_args[7]); DEBUG("----%s----\n", __func__); DEBUG("R0=%x\n",stack_r0); DEBUG("R1=%x\n",stack_r1); DEBUG("R2=%x\n",stack_r2); DEBUG("R3=%x\n",stack_r3); DEBUG("R12=%x\n",stack_r12); DEBUG("LR[R14]=%x\n",stack_lr); DEBUG("PC[R15]=%x\n",stack_pc); DEBUG("PSR=%x\n",stack_psr); DEBUG("SCB_SHCSR=%x\n",SCB->SHCSR); DEBUG("---------------------------\n"); while(1); } /*******************************************************************************************/