基本信息
文件名称:STMicroelectronics 系列:STM32F0 系列 (经济型)_(15).STM32F0系列的时钟配置.docx
文件大小:24.34 KB
总页数:21 页
更新时间:2025-06-14
总字数:约1.01万字
文档摘要

PAGE1

PAGE1

STM32F0系列的时钟配置

1.时钟源概述

STM32F0系列微控制器提供了多种时钟源,以满足不同应用场景的需求。这些时钟源包括内部时钟源和外部时钟源,具体如下:

内部时钟源(InternalClockSources)

HSI(High-SpeedInternalClock):8MHz工厂预校准的内部高速振荡器。

LSI(Low-SpeedInternalClock):32kHz内部低速振荡器,主要用于RTC(实时时钟)和低功耗模式。

外部时钟源(ExternalClockSources)

HSE(High-SpeedExternalClock):外部高速时钟,可以是晶体振荡器或陶瓷谐振器,最高支持16MHz。

LSE(Low-SpeedExternalClock):外部低速时钟,通常为32.768kHz晶体振荡器,用于RTC和低功耗模式。

2.时钟树

STM32F0系列的时钟树结构决定了系统时钟的生成和分配。时钟树的主要组成部分包括:

HSI和HSE时钟

PLL(Phase-LockedLoop)

系统时钟(SYSCLK)

AHB总线时钟

APB1总线时钟

APB2总线时钟

时钟树的配置涉及到多个寄存器,如RCC_CR(ResetandClockControlRegister)、RCC_CFGR(ClockConfigurationRegister)等。通过这些寄存器,可以设置时钟源、分频系数和时钟输出等参数。

3.系统时钟配置

系统时钟(SYSCLK)是STM32F0系列微控制器的主要时钟源,用于驱动CPU和其他系统外设。系统时钟的配置步骤如下:

选择时钟源:可以选择HSI、HSE或PLL作为系统时钟源。

设置分频系数:根据需要设置分频系数。

启用PLL:如果选择PLL作为系统时钟源,需要配置PLL的输入和输出频率。

切换系统时钟:将系统时钟切换到所选的时钟源。

3.1选择HSI作为系统时钟源

//选择HSI作为系统时钟源

voidset_sysclk_to_hsi(void){

//使能HSI时钟

RCC-CR|=RCC_CR_HSION;

//等待HSI时钟稳定

while(!(RCC-CRRCC_CR_HSIRDY)){}

//选择HSI作为系统时钟源

RCC-CFGR=~RCC_CFGR_SW;

RCC-CFGR|=RCC_CFGR_SW_HSI;

//等待系统时钟切换完成

while((RCC-CFGRRCC_CFGR_SWS)!=RCC_CFGR_SWS_HSI){}

}

3.2选择HSE作为系统时钟源

//选择HSE作为系统时钟源

voidset_sysclk_to_hse(void){

//使能HSE时钟

RCC-CR|=RCC_CR_HSEON;

//等待HSE时钟稳定

while(!(RCC-CRRCC_CR_HSERDY)){}

//选择HSE作为系统时钟源

RCC-CFGR=~RCC_CFGR_SW;

RCC-CFGR|=RCC_CFGR_SW_HSE;

//等待系统时钟切换完成

while((RCC-CFGRRCC_CFGR_SWS)!=RCC_CFGR_SWS_HSE){}

}

3.3配置PLL并选择PLL作为系统时钟源

//配置PLL并选择PLL作为系统时钟源

voidset_sysclk_to_pll(uint32_tpll_source,uint32_tpll_factor){

//使能PLL时钟

RCC-CR|=RCC_CR_PLLON;

//等待PLL时钟稳定

while(!(RCC-CRRCC_CR_PLLRDY)){}

//配置PLL源和乘法因子

RCC-CFGR=~(RCC_CFGR_PLLSRC|RCC_CFGR_PLLMUL);

RCC-CFGR|=(pll_source16)|(pll_factor18);

//选择PLL作为系统时钟源

RCC-CFGR=~RCC_CFGR_SW;

RCC-CFGR|=RCC_CFGR_SW_PLL;

//等待系统时钟切换完