STM32学习日志(4)—RCC时钟与延时函数

1. RCC时钟树

STM32本身十分复杂,外设非常多,任何外设都需要时钟才能启动,但每个外设所需频率不尽相同,所以利用复杂的MCU采用多时钟源的方法来解决这些问题。

1. 时钟树示意图

 时钟树主要分为三大部分:时钟输入源、选择器/分频器(APB)/倍频器、最终设定频率三大部分。

 1.1 内核与外设时钟

内部时钟源主要有以下四种:

STM32内部独立时钟源
名字振荡器类型
HSI(高速内部时钟)RC振荡器,频率为8MHz,精度不高。
HSE(高速外部时钟)可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
LSI(低速内部时钟)RC振荡器,频率为40kHz,提供低功耗时钟。 
LSE(低速外部时钟)接频率为32.768kHz的石英晶体。
PLL(锁相环倍频输出)其输出频率最大不得超过72MHz

1. SYSCLK

系统时钟SYSCLK最大频率为72MHz,它是供STM32中绝大部分部件工作的时钟源。系统时钟可由PLL、HSI或者HSE提供输出,并且它通过AHB分频器分频后送给各模块使用。

 通过此图可以看出HSI无需外接晶振,HSE则需要外接晶振,

PLLCLK输入:经过分频器,倍频器和选择器(图上PLL Source Mux),由于内部具有PLL锁相环电路可以在一定范围内调节频率,通过选择器可切换HSI与HSE内部输入,可以看到他们两个分别还具有一个分频器(图上/2的字样)。

2. HCLK

HCLK为高性能总线AHB(advanced high-performance bus)提供时钟信号。由系统时钟SYSCLK分频得到,一般不分频时等于系统时钟,是给外设使用的,分频时可将频率提供给AHB总线/内核/存储器/DMA等内核。通常HCLK与SYSCLK保持一致。

3. FCLK

FCLK(free running clock)是自由运行时钟,为ARM内核提供运行的时钟信号。我们所说的CPU主频为xxHz,指的就是这个时钟信号频率,CPU时钟周期就是1/FCLK(\frac{1}{f}。FCLK不受总线限制,HCLK还需要经过AHB总线,由于内核时钟与AHB总线时钟需要保持一致所以FCLK与HCLK需要保持同步。

4. PCLK

PCLK为高性能外设总线APB(advanced peripherals bus)提供时钟信号。

5. ADCCLK

ADC的时钟频率由系统时钟经过PCLK2经过分频后得到。

1.2 独立时钟

1. RTC时钟(Real Time Clock)

RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。具体可看上图。

 2. 独立看门狗(IWDG)

STM32 有两种看门狗,提供了更高的安全性、时间的精确性和使用的灵活性,一个是独立看门狗另外一个是窗口看门狗。独立看门狗通过LSI RC直接提供时钟信号

3. FLASH编程时钟

HSI RC直接给FLASH提供时钟信号 8MHZ不允许修改

4. USB接口时钟

上面说的有

2. RCC程序代码

2.1 启动文件中的代码

这里自行查看 

2.2 CubeMX生成的代码

 

2.3 如何修改时钟设置

一般只需要修改波特率。

3. HAL库中的延时函数

HAL_Delay(1000);

 这个是HAL库自带的延时函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值