【神舟王】----时钟的学习

对于STM32时钟的了解做一个备忘录:

1 3.5的库 默认执行 SystemInit()函数,改函数执行后,如果使用了外部晶振,则配置HSE为PLL输入,SYSCLK=72Mhz,如果没有使用外部晶振,则配置成HSI为SYSCLK,此时SYSCLK=8MHz。

2 在Systick的设置中,

if (SysTick_Config(SystemCoreClock / 1000))
    {
        while(1);
    }
    TimingDelay = nus;
    while(TimingDelay != 0);

这仅仅对于SystemCoreClock=72Mhz是对的,当SystemCoreClock不是72MHz时,要改动。

3 加入宏定义:

#define        SYSTICK_FREQ            (48000000)
if (SysTick_Config(SYSTICK_FREQ / 1000))

这样就解决问题了。

4 SYSCLK可以是

(1)直接是HSI

(2)HSI二分频进入到PLL后倍频得出时钟  HSI必须二分频后才能进入到PLL,可以1到16倍数的倍频。

但是注意,这种情况SYSCLK最大是 64MHz。

5 可以在 RCC_Configuration 函数的最后添加一句代码

SystemCoreClock = HSI_VALUE / 2 * 12;  //SystemCoreClock = SYSCLK_FREQ_48MHz; 

改变 SystemCoreClock 的值。

6 获取SYSCLK的值

RCC_ClocksTypeDef RCC_Clock;
RCC_GetClocksFreq(&RCC_Clock);
原文地址:https://www.cnblogs.com/wangyuezhuiyi/p/3275841.html