打印
[应用相关]

STM32单片机系统时钟

[复制链接]
246|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

        这里必须阐明系统时钟的简历对于系统运行的重要性。系统所有的运行都是建立在时钟的正常运行上的,没有稳健的系统时钟,就不可能有稳定的系统。

        在系统中,复位后首要的任务是建立系统时钟,以下是建立系统时钟的基本步骤:

       

        1. 将所有的RCC外设寄存器重设为默认值;

        2.启用外部高速晶振

        3.等待,知道外部高速晶振稳定;

        4.设置欲取指缓存使能和代码延时值;

        5.设置AHB(HCLK)等于系统时钟;

        6.设置高速APB2(PCLK2)为系统时钟;

        7.设置低速APB1(PCLK1)为系统时钟的1/2,APB2最高是38MHz;

        8.设置PLL时钟源及倍频系数,使能PLL,经过PLL被频后最高时钟只能72MHz;

        9.等待PLL初始化;

        10.设置PLL为系统时钟;

        11.等待PLL成功作为系统时钟源。

        以下通过实例代码表征上述的使用方法。主要就是根据以上的系统时钟配置的顺序来做代码处理:

        ErrorStatus HSEStatusUpStatus;

        //将外设RCC寄存器重设为默认值

        RCC_DeInit();

        //设置外部高速晶振

        RCC_HSEConfig(RCC_HSE_ON);

        //等待HSE起振

        HSEStatusUpStatus = RCC_WaitForHSEStatusUp();

        if(HSEStatusUpStatus == SUCESS)

        {

        //预取指缓存使能

        FLASH_PrefetchBufferCmd(FLASH_PertchBuffer_Enable);

        //设置代码延时值,FLASH_Latency_2,2 延时周期

        FLASH_SetLatency(FLASH_Latency_2);

        //设置AHB时钟(HCLK)

        //RCC_SYSCLK_Div1 AHB 时钟 = 系统时钟

        RCC_HCLKConfig(RCC_SYSCLK_Div1);

        //设置高速AHB2为系统时钟

        RCC_PCLK2Config(RCC_HCLK_Div1);

        //设置低速AHB时钟

        RCC_PCLK2Config(RCC_HCLK_Div2);

        //设置PLL时钟

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

        //使能PLL

        RCC_PLLCmd(enable);

        // 等待指定RCC标志位设置成功,等待PLL初始化成功

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

        {

        }

        //设置PLL为系统时钟

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)

        //0x00 HSI,0X04 HSE,0X08 PLL

        while(RCC_GetSYSCLKSource() != 0x08)

        {

        }

        }

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

116

主题

199

帖子

1

粉丝