А точно именно хардфолт? Там по умолчанию на множество прерываний одна и та же затычка, скорее всего.
Не обязательно именно из-за той же самой "затычки". Если программист не предпринимал попыток разделения fault-ов на разные типы (Bus fault, Usage fault, etc.) и обработки их по-отдельности; или если невозможно возбуждение соответствующего специфичного fault-а по иным причинам, то будет проводиться эскалация разных типов fault-ов в HF:
Цитата:
В архитектуре Cortex-M эскалация fault-а до Hard fault происходит в следующих случаях:
При возникновении fault-а в режиме обработки исключения:
Если возникло исключение (например, BusFault, UsageFault или MemManageFault) в контексте уже выполняющегося обработчика исключений и этот fault не может быть обработан корректно, то он эскалируется до HardFault. Это предотвращает рекурсивные вызовы исключений, которые могут привести к зависанию системы.
Когда в системе не разрешено определенное исключение:
Если произошло исключение типа BusFault, UsageFault или MemManageFault, но соответствующее ему исключение отключено (например, бит EN в регистре управления исключениями сброшен), то оно будет эскалировано до HardFault.
Ошибка стека (Stack overflow):
Если в результате переполнения стека или другого сбоя в работе стека происходит повреждение данных в стеке (например, некорректный возвратный адрес), это также может вызвать HardFault.
Доступ к защищенной памяти:
Если процессор пытается обратиться к области памяти, доступ к которой запрещен (например, из-за защиты памяти в системе), и этот доступ приводит к возникновению MemManageFault или BusFault, которые не могут быть обработаны корректно, то также происходит эскалация до HardFault.
Ошибка во время fetch команды (Prefetch):
Если произошел BusFault при извлечении команды из памяти, это автоматически эскалируется до HardFault, так как процессор не может продолжить выполнение программы без этой команды.
Ошибка из-за некорректной конфигурации MPU (Memory Protection Unit):
Если MPU неправильно сконфигурирован, это может привести к возникновению MemManageFault, который эскалируется до HardFault, если проблема не может быть разрешена.
Таким образом, эскалация до HardFault служит последним рубежом защиты, когда система сталкивается с критической ошибкой, которую не удается обработать штатными методами.
и программист получит честный HF в любом случае.