Нашел ошибку
У меня была строчка:
GPIOB->CRL|=0xB0000000; //выход 50МГц, общее назначение вывода
После сброса в регистре GPIOB_CRL не нулевое значение,поэтому я получал не то что хотел.
Правильное значение:
GPIOB->CRL=0xB0000000; //выход 50МГц, альтернативная функция push-pull.
После этой строчки ШИМ появился.
Большое спасибо всем ответившим за помощь!