Estoy intentando establecer PLL como la fuente del reloj de mi sistema al iniciar mi microcontrolador, STM32f103
He comentado todas las definiciones en mi system_stm32f10x.c
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz 24000000 */
/* #define SYSCLK_FREQ_36MHz 36000000 */
/* #define SYSCLK_FREQ_48MHz 48000000 */
/* #define SYSCLK_FREQ_56MHz 56000000 */
/*#define SYSCLK_FREQ_72MHz 72000000*/
Entonces mi sistema comienza con hsi (8Mhz) como la fuente del reloj. Esto he comprobado que funciona bien. Sin embargo, cuando intento inicializar pll para configurarlo como la fuente del reloj, el indicador Listo para PLL nunca se establece.
//on boot the system core clock is set
//HSI @ 8Mhz. Set this to PLL with PLL source HSI
//to get the max sysclock of 64mhz
//ensure hsi is ready
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)!=SET);
RCC_PLLCmd(DISABLE);
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);
RCC_PLLCmd(ENABLE);
printf("1");
//wait till pll ready
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)!=SET);
printf("1");
//configure sysclk to use pll
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//after changing clocks ALWAYS call this function to update
//the system clock variables
SystemCoreClockUpdate();
Cuando depuro mi código, solo obtengo '1' en mi ventana de salida de depuración, lo que significa que nunca se establece la marca de preparación de pll. He intentado con un menor factor de multiplicación de pll con el mismo resultado.
¿Alguna idea de lo que podría ir mal aquí?