首页 理论教育 STM32固件库编程:如何设置系统时钟

STM32固件库编程:如何设置系统时钟

时间:2023-10-21 理论教育 版权反馈
【摘要】:在第144行,找到#define HSE_VALUE,如图6-5所示,这里写入了晶振频率数,系统默认为25000000,即25MHz。同样地,设置系统时钟频率为168MHz,只需修改分频因子M为18即可,即“#define PLL_M 18”。图6-5设置外部时钟图6-6设置倍频/分频因子在system_stm32f4xx.c中我们可以找到第437行,如图6-7所示,看到系统内核时钟的变量赋值“uint32_t SystemCoreClock=168000000;”。SysTick_CLKSourceConfig表示使用内核时钟8分频。使用该函数确定定时器的时钟后,这个时钟的周期就是SysTick定时器计数的周期。

STM32固件库编程:如何设置系统时钟

掌握了时钟的计算方法,就可以设置系统时钟了。在stm32f4xx.h中我们可以设置外部晶振频率。在第144行,找到#define HSE_VALUE,如图6-5所示,这里写入了晶振频率数,系统默认为25000000,即25MHz。倍频/分频因子的设置在system_stm32f4xx.c的第371行,如图6-6所示,这里的默认值是25。同样地,我们可以找到#define PLL_Q,默认值是7;找到#define PLL_N,默认值是336;找到#define PLL_P,默认值是2。因此,系统默认外接晶振是25MHz,M=25,N=336,P=2,可以计算出默认值的SYSCLK是168MHz。

如果外接的晶振的频率不是25MHz,修改宏定义即可。例如,用18MHz的晶振,则修改宏为“#define HSE_VALUE 18000000;”。同样地,设置系统时钟频率为168MHz,只需修改分频因子M为18即可,即“#define PLL_M 18”。

图6-5 设置外部时钟

图6-6 设置倍频/分频因子

在system_stm32f4xx.c中我们可以找到第437行,如图6-7所示,看到系统内核时钟的变量赋值“uint32_t SystemCoreClock=168000000;”。这里相当于SYSCLK频率为168MHz,这与之前的晶振、倍频/分频因子的设置应该一致。

(www.xing528.com)

图6-7 设置系统内核时钟

内核时钟与Cortex系统时钟(SysTick使用的时钟)是通过分频因子传递的,如图6-3所示,在固件库里设置SysTick时钟源的函数SysTick_CLKSourceConfig()如下:

形参可以是SysTick_CLKSource_HCLK和SysTick_CLKSource_HCLK_Div8。当参数为SysTick_CLKSource_HCLK时,分频因子为1,即不做分频处理,SysTick时钟等于内核时钟;当参数为SysTick_CLKSource_HCLK_Div8时,分频因子为8,即8分频,SysTick时钟为内核时钟的1/8。

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK)表示不分频,使用内核时钟。SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8)表示使用内核时钟8分频。

使用该函数确定定时器的时钟后,这个时钟的周期就是SysTick定时器计数的周期。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈