Bus fault while using Uart in ISR mode

Hello guys, am experiencing a bus fault while using stm32f407 board, it happens more often when i use the uart peripheral(Usart6) of the MCU.

I can’t seem to wrap my head around the cause, or trace the routine causing the fault. I have increased the stack and heaps of the tasks am working with.

Is there a way to find the root cause of the problem. I’m totally a newbie
and also, i’ll like to note that am using sprintfs to build strings of characters am working with.
Please help.

Check the forum for the following common issues:

  • Stack overflow (see configCHECK_FOR_STACK_OVERFLOW).
  • Cortex M interrupt priority configuration (and making sure configASSERT() is defined in a way to help FreeRTOS catch and report these kinds of config errors)
  • Malloc failures (heap not big enough) going unnoticed

In general for the above issues, FreeRTOS has some provisions to help you catch them before they cause a difficult-to-diagnose fault condition.

Assuming you are using newlib, have you set configUSE_NEWLIB_REENTRANT? Have you made malloc (used internally by newlib) threadsafe – typically by providing __malloc_lock() and __malloc_unlock() functions? If you are using printf with floats from more than one FreeRTOS task you will definitely need to do these things (or other solution).

1 Like

See the article at Debugging and diagnosing hard faults on ARM Cortex-M CPUs to see how to add code to show you where the bus fault is occurring.