STM32F103 Indicador de listo para PLL Nunca establecido

Estoy tratando de configurar PLL como fuente de 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*/

Así que mi sistema comienza con hsi(8Mhz) como fuente de reloj. He verificado que funciona bien. Sin embargo, cuando trato de inicializar pll para configurarlo como fuente de reloj, el indicador PLL Ready 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 el indicador de pll ready nunca se establece. Lo intenté con un factor de multiplicación de pll más bajo con el mismo resultado.

¿Alguna idea de lo que podría estar yendo mal aquí?

basado en su sugerencia que hice. pero produjo prácticamente el mismo código y el problema persiste

Respuestas (1)

Logró resolver el problema.

Cambiar la latencia de flash a estado de espera 2 (como se describe en la página 57 del Manual de referencia de STM32F103C8T6) solucionó el problema.

Esto no ayudó en mi caso :(FLASH->ACR |= FLASH_ACR_LATENCY_1;
@binaryBigInt prueba el estado de espera 2