Столкнулся, что не понимаю до конца как задаются альтернативные функции. Т.е. первая строка = AF0, что работает и в даташите прямо указано (пишем в зависимости от пина со смещением в нужное место регистра AFR "0" = ок).
Вторая строка тогда по логике = AF1, т.е. для PA9, TIM1_CH2 должно быть GPIOA->AFR[1] |= 1 << ((9 - 8) * 4)); , а вот и нет! на самом деле работает как если бы оно было AF2 - т.е. по логике - третья строка!
update: не долистал до главной таблички, но пусть будет картинко в назидание мне)