Так ведь HardFault не просто так приключаются. Они происходят от ошибок программе или ошибок аппаратуры. Пытаешься, например, выбрать команду из несуществующей памяти. Протрассируй как ты туда попал и исправь ошибку. Случайно туда обычно не залетают. А если залетают, то зацикливай и ожидай сброса по WDT :)