На STM32F4DISCOVERY кварц 8МГц, а в примерах (они для платы TE-STM32Fx07) - 25МГц. Это задаётся в makefile, строка
Код
HSE_VALUE = 25000000
, поменяйте на 8000000.
А в sysinit.cpp, чтобы заработало на 168МГц, надо задать:
Код
#define PLL_M 8
#define PLL_N 336
// SYSCLK = PLL_VCO / PLL_P
#define PLL_P 2
// USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ
#define PLL_Q 7
Ну и включить high performance mode:
Код
static inline void init_clocks()
{
RCC->CR |= RCC_CR_HSEON;
while (!(RCC->CR & RCC_CR_HSERDY));
// Enable high performance mode, System frequency up to 168 MHz
RCC->APB1ENR |= RCC_APB1ENR_PWREN;
PWR->CR |= PWR_CR_PMODE;
...
Если бы я знал, что такое электричество...