STM32F103 PLL Ready Flag nunca se establece

1

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í?

    
pregunta Ankit

1 respuesta

2

Gestionado para resolver el problema.

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

    
respondido por el Ankit

Lea otras preguntas en las etiquetas