STM32F407由于没有连接外部晶振,请问怎么设置内部SHI,使得系统时钟为168M?系统默认的是在启动代码里调用SystemInit,系统上电后SYSCLK,HCK,PCLK1,PCLK2都是16M.我有个设置函数,代码如下,但调用后时钟都不对了,好多时钟都是0.
void SYSCLK_Configuration(void)
{
u8 status;
RCC_ClocksTypeDef RCC_Clocks;
//ErrorStatus HSEStartUpStatus;
/* RCC system reset */
RCC_DeInit();
/* Enable Internal High Speed oscillator */
RCC_HSICmd(ENABLE);
/* Wait till HSI is ready */
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)
{
}
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div2);
/* PCLK1 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div4);
/* SYSCLK = ((HSI / 16) * 336) / 2 = 168MHz */
RCC_PLLConfig(RCC_PLLSource_HSI, 16, 336, 2, 4);
/* Enable PLL */
RCC_PLLCmd(ENABLE);
/* Wait till PLL is ready */
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{}
/* Select PLL as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* Wait till PLL is used as system clock source */
while (RCC_GetSYSCLKSource() != 0x00)
{}
RCC_GetClocksFreq(&RCC_Clocks);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>