where you will find more information. To track where you are blocked please check whether you are not using HAL_Delay function from interrupts or from tasks. From task it is better to use osDelay which is not blocking CPU.
Please, keep an original form of HAL_Delay() and please do not call from it any OS functions. HAL_Delay should have nothing in common with OS to have an option to work with the hardware.
HAL_Delay() in your case should generate delays, timeouts based on Timer6 events. Timer6 interrupt has higher priority (much above OS) to allow hardware, its interrupts to work and not be blocked by OS (within critical sections using BASEPRI).
2) Incorrect interrupt priority assignment, especially on Cortex-M parts where numerically high priority values denote low actual interrupt priorities, which can seem counter intuitive. See
3) Calling an API function from within a critical section or when the scheduler is suspended, or calling an API function that does not end in 'FromISR' from an interrupt. 4) Using a queue or semaphore before it has been initialised or before the scheduler has been started (are interrupts firing before vTaskStartScheduler() has been called?). **********************************************************************/
for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 The mini list structure is used as the list end to save RAM. This is checked and valid. */
{ /* There is nothing to do here, just iterating to the wanted insertion position. */ } }
I am attaching a simple ready project on FreeRTOS and manual from one of our workshops. It is done on STM32F072 Nucleo board, but can be adapted to any STM Inside you will find a STM32CubeMX project (.ioc file), complete project for Keil uVision, but you can regenerate the code to any other IDE.
Most of the job in my project is done by STM32CubeMX (FreeRTOS configuration, task, queues, semaphores definitions). Then in the code I am doing only some interrupt callbacks and task functions. What I would do is to compare first settings of FreeRTOS in yours and mine project and then after your code regeneration check your code with my proposal. All of mine code is placed within /*USER CODE BEGIN */ and /*USER CODE END */ lines, so it is quite easy to identify what has been generated by STM32CubeMx and what by me.