stm32 + freeRTOS 10.0.0 + StmCubeMX

tsienuk wrote on Thursday, February 01, 2018:


I’m just starting a new project, I have used freertos extensively many years ago (versions 2-5) but we have decided to use freertos going forward.

I know that the CubeMX version of freertos is V9, so I have manually added freertos to the project and made it so that the interrupts that FreeRTOS wants to use are being set to the freertos versions instead of the ones that CubeMX uses.

I can quite happily create a task, start the scheduler and run a loop in the task with a delay inside it and it all works fine.

However, now I’m trying to integrate a little bit of extra code with some DMA transfers, I’m trying to use events and have created an event and in the main task I am waiting for two flags to be set.

In the ADC DMA ISR callback I am calling:

xResult = xEventGroupSetBitsFromISR(xDMAEventGroup, 1, &xHigherPriorityTaskWoken);

But it the process of calling this it gets stuck in this call, specifically:


I’ve searched around and had a look at various things, the event is allocated properly and as far as I know the interrupt priorities are correct and timers are enabled, timer task is running at a higher priority than the task waiting.

Bit stuck, anything I should specifically be looking for that could be the cause of this?


tsienuk wrote on Thursday, February 01, 2018:

Solved. Been looking at this for ages…

It’s exactly what the documentation eludes to, interrupt priorities.

CubeMX defaults the ISR for the DMA to be level 0, hence the problem. I just manually changed it to 15 as a test and the event waiting is now working.