С утра на свежую голову разобрался. В файле system_stm32f10x.c применяется константа HSE_VALUE = 0x17D7840, т.е. по умолчанию подразумевается кварц 25 MHz, а я при подсчете на бумажке взял 8MHz.
* HSE_VALUE is a constant defined in stm32f1xx.h file (default value
* 8 MHz or 25 MHz, depedning on the product used), user has to ensure
* that HSE_VALUE is same as the real frequency of the crystal used.
* Otherwise, this function may have wrong result.
*
* - The result of this function could be not correct when using fractional
* value for HSE crystal.
Я и себе, и всем Вам голову заморочил. У меня была отладочная плата с STM32F103RBT6. Во время первых опытов я благополучно спалил ее, подав +5 прямо на камень. Родной замены в наших магазинах не нашел, только 105RBT6. По ногам подошла, платку дальше стал использовать для экспериментов, забыл что и кварц поменять надо. И вот результат - два дня опухшей головы и Вам головы морочил.
Еще раз прошу прощения за свою невнимательность и забывчивость.
Всем удачи и успеха!