HardFault (в CM0 и у старших, если запрещен BusFault) вылетает не
по границе массива (который есть чисто программная сущность и
процессор ничего про него не знает), а по аппаратным границам.
Например при попытке обратиться к несуществующей памяти (когда
никто на шине не ответил на обращение процессора) или при попытке
выполнить код из регистров периферии.
Не надо делать мне как лучше, оставьте мне как хорошо