Если сделаете обработчик HardFault следующего вида, то в регистре R0 в отладчике получите адрес команды, на которой улетели в HardFault. А конкретную причину можно узнать, изучая Fault регистры, в книжке Ю можно найти описание.
Код
__asm void HardFault_Handler(void) {
TST LR, #4
ITE EQ
MRSEQ R0, MSP ; Main Stack was used, put MSP in R0
MRSNE R0, PSP ; Process Stack was used, put PSP in R0
LDR R0, [R0, #24] ; Get stacked PC from stack
B .
}