From 9d70827e65d3affe0e2fd2302f1a77d5141a9661 Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 14 Jul 2026 17:34:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D1=80=D0=B8=20HardFault?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/FreeRTOS.h | 2 +- src/tasks.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/inc/FreeRTOS.h b/inc/FreeRTOS.h index f589a27..68931ff 100644 --- a/inc/FreeRTOS.h +++ b/inc/FreeRTOS.h @@ -431,7 +431,7 @@ #endif #ifndef configRECORD_STACK_HIGH_ADDRESS - #define configRECORD_STACK_HIGH_ADDRESS 0 + #define configRECORD_STACK_HIGH_ADDRESS 1 #endif #ifndef configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H diff --git a/src/tasks.c b/src/tasks.c index 988d8aa..4d2f000 100644 --- a/src/tasks.c +++ b/src/tasks.c @@ -5000,3 +5000,28 @@ static void prvAddCurrentTaskToDelayedList(TickType_t xTicksToWait, #endif #endif /* if ( configINCLUDE_FREERTOS_TASK_C_ADDITIONS_H == 1 ) */ + + +// Добавьте в конец файла task.c (после всех функций) + +void vTaskGetCurrentTaskStackInfo( void ** ppvStackStart, void ** ppvStackEnd ) +{ + TCB_t * pxTCB = pxCurrentTCB; + + if( ppvStackStart != NULL ) + { + *ppvStackStart = ( void * ) pxTCB->pxStack; + } + + if( ppvStackEnd != NULL ) + { +#if ( configRECORD_STACK_HIGH_ADDRESS == 1 ) + *ppvStackEnd = ( void * ) pxTCB->pxEndOfStack; +#else + // Если pxEndOfStack не определён, можно вычислить его, зная размер стека. + // Но размер стека (в словах) не хранится в TCB. Поэтому либо включите + // configRECORD_STACK_HIGH_ADDRESS, либо используйте фиксированный лимит. + *ppvStackEnd = NULL; +#endif + } +} \ No newline at end of file