Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

HardFault Cortex M0+

Başlatan EMP_Otto, 23 Ağustos 2016, 16:15:34

EMP_Otto

Merhaba arkadaslar ,
Stm32L0 kullanarak geliştirdiğim bir projede cihaz belirli süre çalışınca HardFaultta düşüyor.Sistem register degerlerini hardfaulta düşünce dump ediyorum.Dump etmek için aşagıdaki kodları kullanıyorum.
Fakat aldıgım register degerleriyle sorunu çözemedim.Her seferinde aldıgım degerler farklı cünkü.Önerebileceğiniz başka bir yöntem var mıdır?
Çalışan bir sistemin neden Hardfaulta düştüğünü en efektif olarak nasıl bulabiliriz?
void HardFault_Handler(void)
{
  register uint32_t sp    __asm("r13");
  register uint32_t R0 __asm("r0");
  register uint32_t R1 __asm("r1");
  register uint32_t R2 __asm("r2");
  register uint32_t R3 __asm("r3");
  register uint32_t R4 __asm("r4");
  register uint32_t R12 __asm("r12");
  register uint32_t lr __asm("r14");
  register uint32_t pc __asm("r15");
  register uint32_t xpsr  __asm("xpsr");
  register uint32_t ipsr  __asm("ipsr");
 
  printf("R0:%x \r\n",R0);
  printf("R1:%x \r\n",R1);
  printf("R2:%x \r\n",R2);
  printf("R3:%x \r\n",R3);
  printf("R4:%x \r\n",R4);
  printf("R12:%x \r\n",R12);
  printf("LR:%x \r\n",lr);
  printf("SP:%x \r\n",sp);
  printf("PC:%x \r\n",pc);
  printf("PSR:%x \r\n",xpsr);
  printf("IPSR:%x \r\n",ipsr);
  

  while (1)
  {

  }
}
Bu işler zordur,özveri ister...

F493

Selam,

https://www.picproje.org/index.php/topic,65100.msg504855.html#msg504855

Buradaki videoyu izleyin ben sorunumu videodan faydalanarak yakalayıp çözdüm.

Esen kalın.