STM32F4XX时钟配置

合集下载

STM32F4时钟树概述

STM32F4时钟树概述

STM32F4时钟树概述STM32F4 相对于 STM32F1 来说,时钟部分复杂了很多, STM32F4 的时钟配置,我们提供两个函数: Sys_Clock_Set 和Stm32_Clock_Init。

其中 Sys_Clock_Set 是核⼼的系统时钟配置函数,由 Stm32_Clock_Init 调⽤,实现对系统时钟的配置。

外部程序,⼀般调⽤ Stm32_Clock_Init函数来配置时钟。

sys⽂件夹中在 STM32F4 中,有 5 个最重要的时钟源,为 HSI、 HSE、 LSI、 LSE、 PLL。

其中 PLL 实际是分为两个时钟源,分别为主 PLL 和专⽤PLL。

从时钟频率来分可以分为⾼速时钟源和低速时钟源,在这 5 个中 HSI, HSE 以及 PLL 是⾼速时钟, LSI 和 LSE 是低速时钟。

从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的⽅式获取时钟源,其中 HSE 和LSE 是外部时钟源,其他的是内部时钟源。

①、 LSI 是低速内部时钟, RC 振荡器,频率为 32kHz 左右。

供独⽴看门狗和⾃动唤醒单元使⽤。

②、 LSE 是低速外部时钟,接频率为 32.768kHz 的⽯英晶体。

这个主要是 RTC 的时钟源。

③、 HSE 是⾼速外部时钟,可接⽯英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~26MHz。

我们的开发板接的是 8M 的晶振。

HSE 也可以直接做为系统时钟或者 PLL 输⼊。

④、 HSI 是⾼速内部时钟, RC 振荡器,频率为 16MHz。

可以直接作为系统时钟或者⽤作 PLL输⼊。

⑤、 PLL 为锁相环倍频输出。

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

第⼀个输出 PLLP ⽤于⽣成⾼速的系统时钟(最⾼ 168MHz)第⼆个输出 PLLQ ⽤于⽣成 USB OTG FS 的时钟(48MHz),随机数发⽣器的时钟和 SDIO时钟。

STM32入门教程--系统时钟配置

STM32入门教程--系统时钟配置

STM32 系统时钟配置一、STM32的时钟系统时钟是什么?时钟通常是振荡器(如晶振)产生的特定频率的方波信号,时钟周期是时钟频率的倒数,时钟频率1MHz时钟周期为1/1000000=1us。

时钟周期是MCU处理指令的最小时间单元,每个程序指令都需要若干个时钟周期,MCU的时钟频率越快,完成一个指令的时间就越短,速度就越快。

时钟是MCU运行的基础,好比MCU的脉搏,是MCU性能的重要参数。

每个MCU 都是在某个特定的时钟频率下进行工作的,如C51单片机时钟频率为12MHz,而STM32F103 的系统时钟频率是72MHz。

STM32的时钟系统STM32时钟频率较高,时钟越快功耗越大,同时抗电磁干扰能力也会越弱。

而且STM32外设非常多,而通常外设是不需要像系统时钟那么高的频率的,比如看门狗和RTC 只需要几十K的时钟即可。

另外实际使用的时候通常只会用到有限的几个外设,STM32可以只给需要启动的外设分配时钟,以此来降低功耗。

由此可看出STM32 的时钟系统较为复杂,它采用了多个时钟源的方法来解决这些问题。

STM32 有4个独立时钟源:HSI、HSE、LSI、LSE。

①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。

②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。

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

其中LSI是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源而独立使用,HSI高速内部时钟 HSE高速外部时钟 PLL锁相环时钟这三个经过分频或者倍频作为系统时钟来使用基本时钟源(图中绿色箭头指出):(1)HSI高速内部时钟,RC振荡器,8MHz。

(2)HSE高速外部时钟,石英/陶瓷谐振器,8MHz。

(3)LSI低速内部时钟,RC振荡器,40kHz。

STM32F4xx can总线配置宝典

STM32F4xx can总线配置宝典

1、SystemInit函数用于初始化STM32系统的各种时钟。

此功能只有在复位后使用。

在system_stm32f4xx.c(主要描述CMSIS的Cortex-M4设备外设接入层系统的源文件)中定义。

2、GPIO口初始化:GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(GPIOB, &GPIO_InitStructure);3、CAN总线设计:CAN1_RX: PI9 PA11 PD0 PB8CAN1_TX: PA12 PH13 PD1 PB9CAN2_RX: PB5CAN2_TX: PB6STM32的CAN控制器程序设计的重点集中在CAN寄存器组的初始化过程中,而CAN初始化的重点在于波特率的设置、过滤器的设置和位时序的配置。

CAN总线的波特率设计:波特率=1/正常的位时间正常的位时间=1*Tq+Tbs1+Tbs2,Tq=CAN的分频数*Tpclk。

Tpclk= APB1的时钟周期启动后的STM32F407:SYSCLK = 168MHzHCLK = SYSCLK/1 = 168MHzPCLK1 = HCLK/4 = 42MHzSTM32F407 的CAN属于APB1,又由于CAN_InitStruct.CAN_Prescaler = 2;则CAN的时钟为PCLK1/2 = 21 MHz。

STM32F0xx 微控制器的时钟配置介绍

STM32F0xx 微控制器的时钟配置介绍

2 年 05 月
文档 ID 022837 第 1 版
1/16

目录
目录
AN4055
1
术语表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 专家模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4
已知限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
文档 ID 022837 第 1 版
3/16
3
图片索引
图片索引
AN4055
图 1. 图 2. 图 3. 图 4. 图 5. 图 6. 图 7.
时钟结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 I2S 时钟结构图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 向导模式用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 选择时钟源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 文件生成错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 专家模式用户界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 超出系统时钟频率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

STM32F4时钟树外设挂靠总线学习小结

STM32F4时钟树外设挂靠总线学习小结

STM32F4时钟树学习小结时钟是单片机的心脏,重要性不言而喻,STM32F4的时钟树是比较复杂的。

时钟树图一时钟树图二1:STMF4xx系统共计有三个主要时钟源(HSI、HSE和PLL)和两个次要时钟源(LSE、LSI)。

2:SYSCLK可以来自HSI、HSE和PLL,多数采用PLL频率最高能达到168MHz。

3:RTC时钟可以来自LSE、LSI和HSE,但只有用LSE时,才能保证系统电源掉电时RTC仍能正常工作。

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

AHB 域的最大频率为168 MHz。

高速APB2 域的最大允许频率为84 MHz。

低速APB1 域的最大允许频率为42 MHz。

5:STM32F405xx/07xx 和STM32F415xx/17xx 的定时器时钟频率由硬件自动设置。

如果APB 预分频器为1,定时器时钟频率等于APB 域的频率。

否则,等于APB 域的频率的两倍(×2)。

6:除以下时钟外,所有外设时钟均由系统时钟(SYSCLK) 提供:●来自于特定PLL 输出(PLL48CLK) 的USB OTG FS 时钟(48 MHz)、基于模拟技术的随机数发生器(RNG) 时钟(<=48 MHz) 和SDIO 时钟(<= 48 MHz)。

●I2S 时钟●由外部PHY 提供的USB OTG HS (60 MHz) 时钟●由外部PHY 提供的以太网MAC 时钟(TX、RX 和RMII)。

下面介绍挂在不同总线上的设备情况1、挂在AHB1总线的外设有:最高时钟频率:168MHZ1)GPIOA~K2)RCC_AHB1Periph_CRC3)FLITF4)SRAM15)SRAM26)BKPSRAM7)SRAM38)CCMDATARAMEN9)DMA110)DMA211)DMA2D12)ETH_MAC、ETH_MAC_Tx、ETH_MAC_Rx、ETH_MAC_PTP13)OTG_HS、OTG_HS_ULPI2、挂在AHB2总线的外设有:最高时钟频率:168MHZ1)DCMI2)CRYP3)HASH4)RNG5)OTG_FS3、挂在APB1_Peripherals 有:最高时钟频率:42MHZ1)TIM2~142)WWDG3)SPI2~34)USART2~35)UART4~5,7~86)I2C1~37)CAN1~28)PWR9)DAC4、挂在APB2_Peripherals 有:最高时钟频率:84MHZ1)TIM1,8~112)USART1,63)ADC4)ADC1~35)SDIO,1,4,5,66)SYSCFG7)SAI18)LTDC。

STM32系统时钟配置

STM32系统时钟配置

STM32系统时钟配置STM32 在使用不同时钟晶振时,需要对系统时钟进行配置。

下面以16MHz晶振产生72MHz时钟为例进行说明。

由于STM32可进行整数倍倍频,及可选是否2分频。

因而选用16MHz 晶振时,先2分频,再倍频9倍,即可倍频为72MHz。

①查找SystemInit() 函数,即系统时钟设置:图1②进入 SetSysClockTo72() 函数,如果要设置其他频率,进入对应的频率即可,如SetSysClockTo48()。

③参考 STM32中文参考手册的6.3.2时钟配置寄存器(RCC_CFGR)。

如“位17PLLXTPRE ” 所述:HSE分频器作为PLL输入(HSE divider for PLL entry)由软件置’1’或清’0’来分频HSE后作为PLL输入时钟。

只能在关闭PLL时才能写入此位。

0:HSE不分频1:HSE 2分频因而,RCC_CFGR 寄存器的位17 应置“1”。

④如图2红色框中所示,RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL9|RCC_CFGR_PLLXTPRE);添加红色字部分即可完成2分频,则可将16MHz的时钟分频为8MHz。

其实,查找RCC_CFGR_PLLXTPRE宏定义可知:#define RCC_CFGR_PLLXTPRE ((uint32_t)0x00020000)实际上就是将位 17置1。

而RCC_CFGR_PLLMULL9中的9即是倍频倍数。

(8*9=72 MHz)图2⑤如图3所示,全局查找72000000(按住Ctrl+Shift+F,输入72000000),找到SYSCLK_FREQ_72MHz 的宏定义,将其注释取消。

STM32时钟详细配置

STM32时钟详细配置

STM32时钟配置STM32时钟配置步骤// 开启HSI时钟寄存器操作1).开启高速时钟HSE // 设置时钟控制寄存器RCC_CR 位16 置1使能RCC->CR|= 0x00010000;位16 :HSEON:外部高速时钟使能当进入待机和停止模式时,该位由硬件清零,关闭4-16MHz外部振荡器。

当外部4-16MHz 振荡器被用作或被选择将要作为系统时钟时,该位不能被清零。

2).等待高速时钟就绪// 读取时钟控制寄存器RCC_CR位17为1就位while(!(RCC-> CR>>17));位17:HSERDY:外部高速时钟就绪标志由硬件置’1’来指示外部4-16MHz振荡器已经稳定。

在HSEON位清零后,该位需要6个外部4-25MHz振荡器周期清零。

3).设置APB1,APB2,AHB分频系数// 设置时钟配置寄存器RCC_CFGRRCC_CFGR=0x00000400;(AHB :位4-7, (低速)APB1 :位8-10, (高速)APB2 :位11-13)位7:4:HPRE[3:0]:AHB预分频(AHB Prescaler)0xxx:SYSCLK不分频位10:8:PPRE1[2:0]:低速APB预分频(APB1) 100:HCLK 2分频位13:11:PPRE2[2:0]:高速APB预分频(APB2) 0xx:HCLK不分频4).设置PLL倍频// 配置时钟配置寄存器RCC_CFGR 位18-21RCC_CFGR|=7<<18;位21:18:PLLMUL:PLL倍频系数0111:PLL 9倍频输出5).PLL输入时钟源选择// 配置时钟配置寄存器RCC_CFGR 位16RCC_CFGR|=1<<16;位16:PLLSRC:PLL输入时钟源(PLL entry clock source) 1:HSE时钟作为PLL输入时钟。

由软件置’1’或清’0’来选择PLL输入时钟源。

STM32时钟配置方法详解

STM32时钟配置方法详解

STM32时钟配置方法详解STM32是意法半导体(STMicroelectronics)公司推出的一系列32位Flash微控制器,被广泛应用于各种嵌入式系统中。

时钟是STM32微控制器的核心部分,正确配置时钟可以确保系统正常工作并达到预期的性能。

本文将详细介绍STM32时钟配置的方法。

1.时钟源:STM32微控制器提供了多个时钟源,包括内部时钟(HSI、LSI)和外部时钟(HSE、LSE)。

其中,HSI(高速内部时钟)是一个高频率(通常为8MHz)的内部RC振荡器,适用于低功耗应用;LSI(低速内部时钟)是一个低频率(通常为40kHz)的内部RC振荡器,用于RTC(实时时钟)模块;HSE(高速外部时钟)是一个外接的高频晶振,用于提供更精确的时钟信号;LSE(低速外部时钟)是一个外接的低频晶振,适用于RTC模块。

2.主频和系统时钟:主频是指CPU的时钟频率,系统时钟是指STM32微控制器的总线时钟,包括AHB(高性能总线)、APB1(低速外设总线)和APB2(高速外设总线)。

在进行STM32时钟配置之前,需要按照以下几个步骤来完成。

1.启用对应的时钟源:根据具体需求,选择合适的时钟源并启用相应的时钟。

可以通过设置RCC_CR寄存器和RCC_APB1ENR/RCC_APB2ENR寄存器来实现。

例如,要使用HSE作为时钟源,需要首先启用HSE时钟。

2.配置时钟分频器:为了使系统时钟不超过芯片规格要求的最大频率,需要对时钟进行分频。

分频器有两个,即AHB分频器和APB分频器。

可以通过设置RCC_CFGR寄存器来实现。

例如,将AHB分频器设置为8,将APB1和APB2分频器分别设置为4,可以将主频分别分频为8MHz、32MHz和64MHz。

3.等待时钟稳定:当启用外部时钟源时,需要等待时钟稳定。

可以通过读取RCC_CR寄存器的特定标志位来判断时钟是否稳定。

4. 配置Flash存储器的延时:根据主频的不同,需要设置Flash存储器的访问延时,以确保正常读写数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档