8-STM32之时钟系统

简介: 8-STM32之时钟系统

8.1 时钟系统结构


8.1.1 概述


用户在运行内核和外设时可选择使用外部晶振、内部振荡器或PLL(锁相环),也可为以太网、USB OTG FS,以及HS、I2S和SDIO等需要特定时钟的外设提供合适的时钟源。

STM32F429微控制器内部时钟系统以时钟树的形式存在,如图:


640.png


  01

总线时钟  


RCC可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)。

AHB中的最大允许频率为180MHz,标记为HCLK。高速APB中的最大允许频率为90MHZ.标记为PCLK2。低速APB域的最大尤许频率为45MHz,标记为PCLK1。大部分片上外设挂载在AHB1、AHB2、APB1和APB2总线上,片上外设的工作时钟也由总线时钟通过时钟使能开关控制。

  02

特殊外设时钟 


大部分的外设时钟均由系统时钟(SYSCLK)提供,个别有特殊需要的外设有独立的时钟驱动源。

例如:

(1)来自主PLL输出(PLL48CLK)的USB .OTG FS时钟(48MHz)、基于模拟技术的随机数发生器(RNG)时钟(48MHz)和SDIO时钟(48MHz)。

(2)I2S时钟:通过专用PLL(PLLI2S)或映射到I2S CKIN引脚的外部时钟提供I2S的驱动时钟,以实现高品质的音频性能。

(3)由外部PHY提供的USB OTG HS(60MHz)时钟。

(4)由外部PHY提供的以太网MAC时钟(TX、RX和RMII)。当使用以太网时,AHB时钟频率至少为25MHz。

  03

SysTick时钟 


RCC向Cortex系统定时器(SysTick)馈送8分频的AHB 时钟(HCLK/8)。SysTick 可使用HCLK/8作为其时钟源,也可使用系统时钟FCLK作为其时钟源,具体可在SysTick 控制与状态寄存器中配置。

  04

定时器时钟


STM32F42系列和STM32F43系列微控制器的定时器时钟须率由硬件自动设置。根据RCC时钟配置寄存器(RCC_CFGR)中TIMPRE位的取值,共分为以下两种情况。

(1)RCC DKCFGR寄存器的TIMPRE位清零:如果APB预分频器的预分频系数是1,则定时器时钟频率(TIMxCLK)为PCLKx:否则,定时器时钟频率将为APB域的频率的2倍即TIMrxCLK=2×PCLKx.

(2) RCC DKCFGR寄存器的TIMPRE位置1:如果APB预分频器的预分频系数是1、2或4。则定时器时钟领半为HCLK:否则,定时器时钟须率将为APB域的频率的4倍,即TIMxCLK=4xPCLKx。

大致介绍图下图所示:


640.png

640.png



8.1.2 时钟源


1、STM32F429 系统时钟(SYSCLK)可由三种不同的时钟源来驱动:HSI、HSE、PLL。

1)、HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。

2)、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者

接外部时 钟源,频率范围为4MHz~26MHz。


3)、PLL为锁相环倍频输出。STM32F4有两个PLL:


主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。

第一个输出PLLP用于生成高速的系统时钟(最高216MHz)

第二个输出PLLQ用于生成USB OTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。

专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。


2、两个次级时钟源:LSI、LSE

1) LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。

2) LSE是低速外部时钟,接频率为32.768kHz的石英晶体。RTC

3、特殊外设时钟源

特殊外设时钟源主要提供OTG_HS_SCL、随机数发生器、以太网MAC、SDIO、I2S等需要的时钟。


8.1.3 HSE时钟

高速外部时钟信号(HSE)有以下两种输入方式:


640.png


8.1.4 PLL配置

STM32F4系列微控制器的器件具有两个PLL,PLL内部结构图如图所示。

640.png


8.1.5 LSE 时钟



低速外部时钟信号(LSE)有以下2种输入方式。

1.外部晶振/陶瓷谐振器(无源电路)

LSE晶振是32.768kHz低速外部晶振或陶瓷谐振器,可作为实时时钟外设(RTC)的时钟源来提供时钟/日历或其他定时功能,LSE晶振具有功耗低且精度高的优点。

2.外部时钟(有源电路)

此时内部LSE振荡电路被旁路,必须提供外部时钟源,高频率不超过1MHz。


8.1.6 时钟输出

STM32F4时钟信号输出MCO1(PA8)和MCO2(PC9)。

MCO1:用户可以配置预分频器(1~5)向MCO1引脚PA8输出4个不同的时钟源:

HSI

LSE

HSE

PLL

MCO2:用户可以配置预分频器(1~5)向MCO2引脚PC9输出4个不同的时钟源:

HSE

PLL

SYSCLK

PLLI2S

MCO最大输出时钟不超过100MHz


640.png


8.2 PLL时钟系统配置步骤及常用库函数


8.2.1 PLL系统配置步骤


640.png


8.2.1 系统时钟设置


640.png

640.png

8.2.2 常用库函数


640.png

640.png


640.png


8.3 应用实例


640.png


int main(void)
{
u8 flag=0;
delay_init();  //初始化延时函数
// LED 端口初始化
LED_Config();
/*初始化按键*/
Key_Config();
while (1)
{
if( Key_Scan(GPIOA,GPIO_Pin_0) == KEY_ON  )
{
flag=~flag;
if(flag)
HSE_SetSysClock(25, 180, 2, 9);//系统时钟切换到到90M,最高是216M
else
HSE_SetSysClock(25, 360, 2, 9);//系统时钟切换到到180M,最高是216M
}
LED_ON ;            // LED等亮
delay_ms(500);
LED_OFF;  // LED等灭
delay_ms(500);
}
}

640.png

640.png

640.png


相关文章
|
1月前
STM32F103标准外设库——SysTick系统定时器(八)
STM32F103标准外设库——SysTick系统定时器(八)
130 0
STM32F103标准外设库——SysTick系统定时器(八)
|
1月前
|
监控 前端开发
STM32F103标准外设库——RCC时钟(六)
STM32F103标准外设库——RCC时钟(六)
138 0
STM32F103标准外设库——RCC时钟(六)
小巴陪你搞技术-STM32驱动1602时钟
小巴陪你搞技术-STM32驱动1602时钟
|
1月前
|
内存技术 存储 Android开发
MCU最小系统电路设计(以STM32F103C8T6为例)-3
MCU最小系统电路设计(以STM32F103C8T6为例)
MCU最小系统电路设计(以STM32F103C8T6为例)-3
|
1月前
|
芯片
MCU最小系统电路设计(以STM32F103C8T6为例)-1
MCU最小系统电路设计(以STM32F103C8T6为例)
MCU最小系统电路设计(以STM32F103C8T6为例)-1
|
13天前
|
芯片
【STM32】详解RTC实时时钟的概念和配置&示例代码
【STM32】详解RTC实时时钟的概念和配置&示例代码
|
1月前
|
传感器 数据采集 物联网
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计2
基于STM32的光敏传感器数据采集系统-嵌入式系统与设计课程设计
494 0
|
1月前
STM32CubeMX配置时钟无法使用高速外部时钟HSE
STM32CubeMX配置时钟无法使用高速外部时钟HSE
|
1月前
|
存储 Unix C语言
STM32--RTC实时时钟
STM32--RTC实时时钟