В текущем проекте сделал сохранение последнего исключения во внешнюю flash память для дальнейшего анализа (сохранение последней причины перезагрузки системы). Осталось это все дело протестировать. То есть написать тестовый код так, чтобы гарантированно вызвать исключения: NMI, HardFault, MemManage, BusFault, UsageFault.
Нашел как вызвать HardFault на просторах этого форума (попытка чтения по невыровненному адресу).
Код
void make_hard_fault()
{
__asm volatile
(
"MOVS r0, #1 \n"
"LDM r0,{r1-r2} \n"
"BX LR \n"
);
}
Как лучше/правильнее протестировать все остальные исключения?