Jump to content

    

Определить источник исключения

Програма падает в исключениу

/*
** ===================================================================
**     Method      :  Cpu_Cpu_Interrupt (component MK10FN1M0LQ12)
**
**     Description :
**         This ISR services an unused interrupt/exception vector.
**         This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
PE_ISR(Cpu_Interrupt)
{
  /* This code can be changed using the CPU component property "Build Options / Unhandled int code" */
  PE_DEBUGHALT();
}

Как в KDS определить какая функция вызвала исключение? В IAR есть Call Stack окно в котором видна последняя функция.

В KDS есть вкладка Debug и в ней я вижу.

 

debug.png.580617cd26dea861a99028ea2b9ef4c3.png

Это значит что исключение вызвал main()? Но в  main() есть много функций. Как спуститься до причины проблемы?

 

Я вообще не понимаю при чем здесь main(). В проекте включен FreeRTOS с одним таском. По идее main после инициализации передает управление шедулеру. Если я вылетел в исключение то из таска.

Edited by jenya7

Share this post


Link to post
Share on other sites

В стек заглянуть, посмотреть откуда переход в обработчик произошел. только сначала надо определить из пользовательского режима или из привилегированного режима произошел переход, sp же два

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this