Отличие CM0 и CM3 - в отработке невыровненного доступа. CM3
отрабатывает невыровненный доступ корректно, только тактов больше
уходит. CM0 выпадает в HardFault. В настройках ядра какого-то из
них (или обоих) есть бит, отвечающий за работу при невыровненном
доступе. Толи в CM0 есть такой бит, и он по умолчанию сброшен, толи
в CM3 он по умолчанию установлен. Толи у обоих он есть. Ищи сам.
Возможно, что будет достаточно для CM0 его включить (если он там
есть). 99%, что проблема именно в невыровненном доступе.
А вообще - у тебя есть HardFault - этого достаточно чтобы определить его источник. информацию тоже ищи сам, она есть.