Pull to refresh

Comments 2

Вообще, и обращение к несуществующей памяти, и выполнение недопустимой команды приводят к другим прерываниям, если это архитектура ARMv7-M или ARMv8-M Mainline. В HardFault они превращаются из-за того, что обычно остаются запрещёнными, но, вообще говоря, ничто не мешает их разрешить и обрабатывать каждый такой случай отдельно. Вот на ARMv6-M (Cortex-M0 и -M1) и ARMv8-M Baseline других прерываний нет, поэтому всегда имеет место HardFault.

Кстати говоря, на "полных" микроконтроллерах есть и другие регистры, показывающие причины прерываний -- MMFSR, BFSR, UFSR. Тамошние битики тоже интерес представляют.

Sign up to leave a comment.

Articles