时钟切换

1. 有2种时钟切换方法,自动切换和手动切换。

2. 手动切换,程序在内部高速时钟下,控制led灯闪烁,当切换为低速时钟后,灯的闪烁速度应该变慢。理想情况下应该是这样的,但是没有切换过来。

  GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow);
  
  for (i = 0; i < 10; i++)
  {
    GPIO_ToggleBits(LED_GPIO_PORT, LED_GPIO_PINS);
    delayMs(100);
  }


  CLK_LSICmd (ENABLE);
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
  while(CLK_GetFlagStatus(CLK_FLAG_LSIRDY) == RESET);//RESET 没有准备好  SET准备好了
  CLK_SYSCLKSourceSwitchCmd(ENABLE);


  
  if (CLK_GetSYSCLKSource() == CLK_SYSCLKSource_LSI) 
  {
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//不分频  
    for (i = 0; i < 10; i++)
    {
      GPIO_ToggleBits(LED_GPIO_PORT, LED_GPIO_PINS);
      delayMs(100);
    }
  }

3. 时钟的输出,利用CCO把时钟信号输出到引脚上,再用示波器观察。


int main( void )
{
  int i;
  GPIO_Init(GPIOC, GPIO_Pin_4, GPIO_Mode_Out_PP_High_Fast);
  CLK_CCOConfig(CLK_CCOSource_HSI, CLK_CCODiv_1);
  //CLK_CCOConfig(CLK_CCOSource_HSI, CLK_CCODiv_16);
  
  while(1);


  return 0;
}

时钟切换_第1张图片时钟切换_第2张图片

你可能感兴趣的:(单片机)