Я на SPL начинал, было довольно понятно, но думаю знаете, что там с SPL произошло. Потом HAL в их IDE Stm32CubeMX, ну по сути из-за того, что использую ОС и Ethernet. Периферию я бы так и настраивал на SPL, вроде как LL некий её аналог, особо не сталкивался. Многие советуют писать на CMSIS, так как ошибок будет меньше (при условии, что вы их не будете делать сами), в отличие от кода, который генерирует cubemx, отчасти соглашусь, портянки нагенерированные кубом разгребать то ещё удовольствие, да и косяки там есть. Но порок входа будет ниже. Тут смотря что вы хотите получить (сложность решаемых задач) и как далеко хотите зайти (одно дело чисто прогать, другое если ты embedded разработчик и помимо кода тебе ещё и платы разводить, и монтаж и отладку и тд и тп)