 <p>The Cortex M3 has excellent fault handling features that will make your life easier. On hitting a fault, it automatically stacks several registers like PC and LR, and fault status registers will tell you things like address of bus fault, etc. </p> <p>You should implement a good fault handler (for example, the hard fault handler here: <a href="http://blog.frankvh.com/2011/12/07/cortex-m3-m4-hard-fault-handler/">http://blog.frankvh.com/2011/12/07/cortex-m3-m4-hard-fault-handler/</a>) to print out the stacked registers and debug fault status registers.</p> <p>You should use the UART for printing, just write your own simple custom version of printf for use from your fault handler that doesn't depend on interrupts. Just write bytes directly to uart Tx data register and poll for byte completion.</p>