реклама на сайте
подробности

 
 
> Hardfault STM32F4 Keil, Идентификация ошибки
Boriska
сообщение Oct 6 2014, 17:34
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 28-11-07
Пользователь №: 32 772



Подскажите, как идентифицировать ошибку и найти место ее возникновения.

Прикрепленное изображение


Обработчик:
Код
void HardFault_Handler(unsigned long *hardfault_args){
        volatile unsigned long stacked_r0;
        volatile unsigned long stacked_r1;
        volatile unsigned long stacked_r2;
        volatile unsigned long stacked_r3;
        volatile unsigned long stacked_r12;
        volatile unsigned long stacked_lr;
        volatile unsigned long stacked_pc;
        volatile unsigned long stacked_psr;
        volatile unsigned long _CFSR;
        volatile unsigned long _HFSR;
        volatile unsigned long _DFSR;
        volatile unsigned long _AFSR;
        volatile unsigned long _BFAR;
        volatile unsigned long _MMAR;

        stacked_r0 = ((unsigned long)hardfault_args[0]);
        stacked_r1 = ((unsigned long)hardfault_args[1]);
        stacked_r2 = ((unsigned long)hardfault_args[2]);
        stacked_r3 = ((unsigned long)hardfault_args[3]);
        stacked_r12 = ((unsigned long)hardfault_args[4]);
        stacked_lr = ((unsigned long)hardfault_args[5]);
        stacked_pc = ((unsigned long)hardfault_args[6]);
        stacked_psr = ((unsigned long)hardfault_args[7]);

        // Configurable Fault Status Register
        // Consists of MMSR, BFSR and UFSR
        _CFSR = (*((volatile unsigned long *)(0xE000ED28)));  
                                                                                        
        // Hard Fault Status Register
        _HFSR = (*((volatile unsigned long *)(0xE000ED2C)));

        // Debug Fault Status Register
        _DFSR = (*((volatile unsigned long *)(0xE000ED30)));

        // Auxiliary Fault Status Register
        _AFSR = (*((volatile unsigned long *)(0xE000ED3C)));

        // Read the Fault Address Registers. These may not contain valid values.
        // Check BFARVALID/MMARVALID to see if they are valid values
        // MemManage Fault Address Register
        _MMAR = (*((volatile unsigned long *)(0xE000ED34)));
        // Bus Fault Address Register
        _BFAR = (*((volatile unsigned long *)(0xE000ED38)));

        __asm("BKPT #0\n"); // Break into the debugger

}


Но стек пустой -
Прикрепленное изображение


Подскажите, в чем может быть проблема?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016