Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос новичка CoIDE+FreeRTOS8 вылет в Default_Handler
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Dave Owen
Плата CORTEX_STM32L152_Discovery

Не могу понять почему не работает,
вылетает в static void Default_Handler(void)

в FreeRTOSConfig.h переопределение присутствует
Код
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler


пробовал в
startup_stm32l1xx_md.c
поменять ручками
Код
void (* const g_pfnVectors[])(void) =
  ...
  vPortSVCHandler,                         /*!< SVCall handler                    */
  ...
  xPortPendSVHandler,                      /*!< The PendSV handler                */
  xPortSysTickHandler,                     /*!< The SysTick handler               */

не помогает
Dave Owen
ошибка где-то в heap2.c
Отладчик показал, что вылетает HardFault_Handler

при первом вызове
Код
void *pvPortMalloc( size_t xWantedSize )
{
BlockLink_t *pxBlock, *pxPreviousBlock, *pxNewBlockLink;
static BaseType_t xHeapHasBeenInitialised = pdFALSE;
void *pvReturn = NULL;

    vTaskSuspendAll();
    {
        /* If this is the first call to malloc then the heap will require
        initialisation to setup the list of free blocks. */
        if( xHeapHasBeenInitialised == pdFALSE )
        {
            prvHeapInit();
            xHeapHasBeenInitialised = pdTRUE;
        }
...


xHeapHasBeenInitialised равно произвольному числу, почти при каждом запуске число новое.
а не pdFALSE == 0
Код

#define pdFALSE            ( ( BaseType_t ) 0 )


Почему эта переменная не инициируется как 0?

При использовании
heap1.c
heap4.c
тоже вылетают похожие ошибки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.