关于开启HSI作为SYSCLK
//打开HSI晶体RCC_HSICmd(ENABLE);
//等待HSI晶体准备就绪即稳定才可以作为系统时钟
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET);
//配置AHB CLOCK(HCLK)的值HCLK=SYSCLK=168MHZ
RCC_HCLKConfig(RCC_SYSCLK_Div1);
//配置APB2 CLOCK的值(PCLK2) PCLK2=HCLK/2=84MHZ
RCC_PCLK2Config(RCC_HCLK_Div2);
//配置APB1 CLOCK的值(PCLK1) PCLK1=HCLK/4=42MHZ
RCC_PCLK1Config (RCC_HCLK_Div4);
//配置PLL
RCC_PLLConfig(RCC_PLLCFGR_PLLSRC_HSI,//HSI作为PLL的时钟来源
PLL_M_HSI, //PLLM=16,即Fvco clk input=1MHZ
PLL_N, //PLLN=336,即Fvco clk output=336MHZ
PLL_P, //PLLP=2即PLLCLK=336/2=168MHZ
PLL_Q); //PLLQ=7即Fusb clk=336/7=48MHZ
//打开PLL时钟
RCC_PLLCmd(ENABLE);
//等待PLL时钟就绪稳定
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);
//选择PLLCLK作为系统时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//等待PLLCLK作为系统时钟
while(RCC_GetSYSCLKSource()!=0x08);
// Enable Prefetch Buffer
FLASH_PrefetchBufferCmd(ENABLE);
// Flash 2 wait state
FLASH_SetLatency(FLASH_Latency_5);
//Enables or disables the Instruction Cache feature
FLASH_InstructionCacheCmd(ENABLE);
怎么启动不了? 使用寄存器操作的话就可以,使用库函数操作就不行。有什么问题呢? 深入到库函数中看是否和寄存器一致? 看现成的例程,对照一下
页:
[1]