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

 
 
> Default_Handler
Sergey_rzn62
сообщение Nov 29 2012, 05:28
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 16-11-12
Пользователь №: 74 411



Доброе утро!

Процессор STM32F407. Настройки компилятора -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mthumb -Wall -ffunction-sections -O0 -mfloat-abi=hard -g.
Обрабатываю данные, поступающие по UART. Каждые 20 мс поступают по 20 байт.

Вот кусок кода.
CODE
.....
while (1)
{
if(g_read_usart == 1)
{
f.wx = s.XGYRO_OUT * 0.0008726646259972;
f.wy = s.YGYRO_OUT * 0.0008726646259972;
f.wz = s.ZGYRO_OUT * 0.0008726646259972;

adis_f.ax = s.XACCL_OUT * 0.033;
adis_f.ay = s.YACCL_OUT * 0.033;
adis_f.az = s.ZACCL_OUT * 0.033;

if(g_coarse == 1)
{
ca.bias_wx += adis_f.wx;
ca.bias_wx += adis_f.wx;
ca.bias_wx += adis_f.wx;

ca.m_ax += adis_f.ax;
ca.m_ay += adis_f.ay;
ca.m_az += adis_f.az;
}
........
}

Вопрос в том, что при пошаговой отладке попадаю в функцию
Код
static void Default_Handler(void)
{
    /* Go into an infinite loop. */
    while (1)
    {
    }
}

В чём может быть проблема?

Код такой:

CODE
while (1)
{
if(g_read_usart == 1)
{
f.wx = s.XGYRO_OUT * 0.0008726646259972;
f.wy = s.YGYRO_OUT * 0.0008726646259972;
f.wz = s.ZGYRO_OUT * 0.0008726646259972;

f.ax = s.XACCL_OUT * 0.033;
f.ay = s.YACCL_OUT * 0.033;
f.az = s.ZACCL_OUT * 0.033;

if(g_coarse == 1)
{
ca.bias_wx += f.wx;
ca.bias_wx += f.wx;
ca.bias_wx += f.wx;

ca.m_ax += f.ax;
ca.m_ay += f.ay;
ca.m_az += f.az;
}
........
}


Сообщение отредактировал IgorKossak - Nov 29 2012, 13:03
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
demiurg_spb
сообщение Nov 29 2012, 05:30
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



А обработчик hard-fault прерывания имеется?
Держите пример для keil:
CODE
#include "stdafx.h"

#pragma pack(push, 4)
typedef struct
{
uint32_t r0;
uint32_t r1;
uint32_t r2;
uint32_t r3;
uint32_t r12;
uint32_t lr;
uint32_t pc;
uint32_t psr;
} stacked_regs_t;
#pragma pack(pop)

//=============================================================================
// This is called from the HardFault_HandlerAsm with a pointer the Fault stack as the parameter.
// We can then read the values from the stack and place them into local variables for ease of reading.
//=============================================================================
void hard_fault_debug_print(stacked_regs_t* stack) // prints 8 regs saved on the stack and so on
{
dprintf("\n\nHard fault:\n");
dprintf("R0 : %#08lx\n", stack->r0);
dprintf("R1 : %#08lx\n", stack->r1);
dprintf("R2 : %#08lx\n", stack->r2);
dprintf("R3 : %#08lx\n", stack->r3);
dprintf("R12 : %#08lx\n", stack->r12);
dprintf("LR : %#08lx\n", stack->lr);
dprintf("PC : %#08lx\n", stack->pc);
dprintf("PSR : %#08lx\n", stack->psr);
dprintf("BFAR: %#08lx\n", *((volatile uint32_t*)0xE000ED38));
dprintf("CFSR: %#08lx\n", *((volatile uint32_t*)0xE000ED28));
dprintf("HFSR: %#08lx\n", *((volatile uint32_t*)0xE000ED2C));
dprintf("DFSR: %#08lx\n", *((volatile uint32_t*)0xE000ED30));
dprintf("AFSR: %#08lx\n", *((volatile uint32_t*)0xE000ED3C));
}

//=============================================================================
// Alternative Hard Fault handler to help debug the reason for a fault.
// To use, edit the vector table to reference this function in the HardFault vector
// This code is suitable for Cortex-M3 and Cortex-M0 cores
//=============================================================================
__asm void HardFault_Handler(void) // __irq __attribute__((naked))
{
EXPORT HardFault_Handler

IMPORT hard_fault_debug_print

movs r0, #(1<<2)
mov r1, lr
tst r0, r1
beq do_msp
mrs r0, psp
B (hard_fault_debug_print)
B .
do_msp
mrs r0, msp
B (hard_fault_debug_print)
B .
}


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:48
Рейтинг@Mail.ru


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