diff --git a/CAN-Demo.ioc b/CAN-Demo.ioc index c052be7..c7d4d0d 100644 --- a/CAN-Demo.ioc +++ b/CAN-Demo.ioc @@ -11,8 +11,10 @@ CAN1.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate,Presca CAN1.NART=ENABLE CAN1.Prescaler=8 CAN1.SJW=CAN_SJW_1TQ -FREERTOS.IPParameters=Tasks01,configRECORD_STACK_HIGH_ADDRESS,configTIMER_TASK_PRIORITY,configUSE_NEWLIB_REENTRANT,configTOTAL_HEAP_SIZE -FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL +FREERTOS.FootprintOK=true +FREERTOS.IPParameters=Tasks01,configRECORD_STACK_HIGH_ADDRESS,configTIMER_TASK_PRIORITY,configUSE_NEWLIB_REENTRANT,configTOTAL_HEAP_SIZE,configCHECK_FOR_STACK_OVERFLOW,FootprintOK +FREERTOS.Tasks01=defaultTask,24,256,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL +FREERTOS.configCHECK_FOR_STACK_OVERFLOW=1 FREERTOS.configRECORD_STACK_HIGH_ADDRESS=1 FREERTOS.configTIMER_TASK_PRIORITY=55 FREERTOS.configTOTAL_HEAP_SIZE=20360 diff --git a/Core/Inc/FreeRTOSConfig.h b/Core/Inc/FreeRTOSConfig.h index adf0f92..9de96a5 100644 --- a/Core/Inc/FreeRTOSConfig.h +++ b/Core/Inc/FreeRTOSConfig.h @@ -74,6 +74,7 @@ #define configUSE_16_BIT_TICKS 0 #define configUSE_MUTEXES 1 #define configQUEUE_REGISTRY_SIZE 8 +#define configCHECK_FOR_STACK_OVERFLOW 1 #define configUSE_RECURSIVE_MUTEXES 1 #define configUSE_COUNTING_SEMAPHORES 1 #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index 1bfdfeb..306c912 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -51,7 +51,7 @@ typedef StaticSemaphore_t osStaticMutexDef_t; osThreadId_t defaultTaskHandle; const osThreadAttr_t defaultTask_attributes = { .name = "defaultTask", - .stack_size = 128 * 4, + .stack_size = 256 * 4, .priority = (osPriority_t) osPriorityNormal, }; @@ -64,6 +64,18 @@ void StartDefaultTask(void *argument); void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ +/* Hook prototypes */ +void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName); + +/* USER CODE BEGIN 4 */ +void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName) +{ + /* Run time stack overflow checking is performed if + configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is + called if a stack overflow is detected. */ +} +/* USER CODE END 4 */ + /** * @brief FreeRTOS initialization * @param None diff --git a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c index 60543e3..9977a70 100644 --- a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c +++ b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c @@ -386,7 +386,8 @@ HAL_TickFreqTypeDef HAL_GetTickFreq(void) * @param Delay specifies the delay time length, in milliseconds. * @retval None */ -__weak void HAL_Delay(uint32_t Delay){ +__weak void HAL_Delay(uint32_t Delay) +{ uint32_t tickstart = HAL_GetTick(); uint32_t wait = Delay;