STM32时钟系统对于STM32F1系列(详解)

1.什么是时钟树

我们可以使用STM32F103C8T6的时钟树来给大家做一个演示

在STM32MX中

MCO PA8复用向外部输出到芯片外部

外部时钟源(高速和低速)HSE LSE 更稳定精确度更高

内部时钟源(高速和低速)HSI LSI

HSE可以选择(不分频和二分频)和HSI(二分频)通过PLL(锁相环)使得倍频(2~16)之后得到SYSCLK 系统时钟 72MHZ的

但是内部最高最能到达64MHz,所以一般使用都是外部高速时钟

从SYSCLK到HCLK(AHB总线),要经过分频器,一般我们也不进行分频

下面是分成下面的桥

APB1(36MHz)下面挂载外设和APB2(72MHz)挂载外设还有内核和外设上的时钟都来自于这个HCLK

低速内部时钟源

LSI 可以做成IWDG(独立看门狗)的时钟源也可以做成RTC的时钟源

LSE也可以做成RTC的时钟源

图解如下

HAL_RCC_OscConfig()配置时钟源和锁相环

HAL_RCC_Clockconfig() 配置系统始终总线

_HAL_RCC_PPP_CLK_ENABLE()使能外设时钟

HAL_RCCEx_PeriphCLKConfig()扩展外设时钟

什么是时钟

时钟是具有周期性的脉冲信号,最常用的是占空比为50%的方波

NMI是不可屏蔽中断

2.配置系统时钟

系统系统配置步骤

1.配置HSE_VALUE 在stm32xxxx_hal_conf.h

2.调用systemInit()函数 在system_stm32xxxx.c

调用位置

定义位置

3.选择时钟源,配置PLL 通过HAL_RCC_OscConfig()进行配置

4。选择系统时钟源,配置总线分频器 通过HAL_RCC_ClockConfig()进行配置

  1. 配置扩展外设时钟(可选) HAL_RCCEx_PeriphCLKConfig()进行配置

外设时钟使能和失能

HAL库使能某一个外设的时钟

_HAL_RCC_GPIOA_CLK_ENABLE();

HAL库失能某一个外设的时钟

_HAL_RCC_GPIOA_CLK_DISABLE();

sys_stm32_clock_init()函数

1.HAL_RCC_OscConfig()详解

HAL_StatusTypeDefHal_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)

结构体成员如下图所示

HSEState->RCC_CR寄存器里面的HSEON

2.HAL_RCC_ClockConfig()详解

HAL_StatusTypeDefHal_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct,uint32_t FLatency)

结构体成员如下图所示

下面那一个FLatency表示FLASH等待多少周期

因为我们是72MHz所以这个值就设置成为010

相关推荐
llilian_1611 小时前
总线授时卡 CPCI总线授时卡的工作原理及应用场景介绍 CPCI总线校时卡
运维·单片机·其他·自动化
禾仔仔11 小时前
USB MSC从理论到实践(模拟U盘为例)——从零开始学习USB2.0协议(六)
嵌入式硬件·mcu·计算机外设
The Electronic Cat13 小时前
树莓派使用串口启动死机
单片机·嵌入式硬件·树莓派
先知后行。16 小时前
常见元器件
单片机·嵌入式硬件
恒锐丰小吕16 小时前
屹晶微 EG2302 600V耐压、低压启动、带SD关断功能的高性价比半桥栅极驱动器技术解析
嵌入式硬件·硬件工程
Dillon Dong17 小时前
按位或(|=)的核心魔力:用宏定义优雅管理嵌入式故障字
c语言·stm32
Free丶Chan17 小时前
dsPIC系列-1:dsPIC33点灯 [I/O、RCC、定时器]
单片机·嵌入式硬件
v先v关v住v获v取18 小时前
塔式立体车库5张cad+设计说明书+三维图
科技·单片机·51单片机
恒锐丰小吕19 小时前
屹晶微 EG2106D 600V耐压、半桥MOS/IGBT驱动芯片技术解析
嵌入式硬件·硬件工程