您的位置:首页 > 其它

【STM32F103攻城笔记】外部晶振HSE倍频设置系统时钟

2017-06-06 14:39 225 查看
上一篇的内部晶振的系统时钟设置已经对系统时钟进行了配置,而外部晶振的倍频只需要改变上一篇的初始化函数就可以,其他均一样!

第一步:建立一个HSE倍频的初始化函数void SystemClock_Config(void)  ;

所以我们由上一篇文章变为:

int main (void)

{

       RCC_ClocksTypeDef  RCC_Clocks; //初始化

       SystemClock_Config(); //调用刚才改过的函数

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Usart_Init(115200); //串口为了看数据而已

RCC_GetClocksFreq(&RCC_Clocks); //获取各个时钟频率

while(1)
{
printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency);
//printf("SYSCLK_Frequency %d \r\n",RCC_Clocks.SYSCLK_Frequency);
}

}

下面我们队这个函数进行详细的书写:代码如下:以及贴出了几个库函数的说明!

void SystemClock_Config(void)  

{  

    RCC_DeInit();                        //初始化

    RCC_HSEConfig(RCC_HSE_ON);   //打开外部时钟HSE    8MHz

   

    if(RCC_WaitForHSEStartUp() == SUCCESS)    //等待HSE启动成功

    {  

    

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);  //选择PLL的时钟源并9倍 72Mhz

        RCC_PLLCmd(ENABLE);   //使能PLL时钟                                  

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)     //等待PLL时钟就绪

        {  

        }  

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //系统时钟选择PLL作为时钟源  

        // *           - 0x00: HSI used as system clock  

        // *           - 0x04: HSE used as system clock    

        // *           - 0x08: PLL used as system clock  

        // *           - 0x0C: HSI48 used as system clock, applicable only for STM32F072 devices    

        while(RCC_GetSYSCLKSource()!=0x08)   //判断返回的时钟源是否为PLL时钟源

        {  

        }  

        RCC_HCLKConfig(RCC_SYSCLK_Div1); //PLL不分频给系统时钟   72MHz

    }  

}  

库函数:









最后串口打印结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐