对于时钟,不了解的人可能不是很了解他的作用,稍微知道时钟的人一般都会这样解释“时钟是单片机的心脏、是单片机的脉搏、是心跳”。由此可见时钟的重要性。
时钟为应用带来了高度的灵活性,用户在运行内核和外设时可选择使用外部晶振或者使用振荡器,既可采用最高的频率,也可为以太网、USB OTG FS 以及 HS、I2S 和 SDIO 等需要特定时钟的外设保证合适的频率。
可通过多个预分频器配置 AHB 频率、高速 APB (APB2) 和低速 APB(APB1)。AHB 域的最 大频率为 168 MHz。高速 APB2 域的最大允许频率为 84 MHz。低速 APB1 域的最大允许频 率为 42 MHz。
下面看看stm32给的参考手册上的时钟树。这个是F4的系统时钟树。

这个时钟树看起来很复杂,但我们只要理解了他的工作过程即可。
在这个时钟树中,我们可以看出具体有多少的时钟、时钟的速度、时钟的分配等等。
下面看下具体工作过程
主要过程
首先我们的高速外部时钟(HES),看名字就可直到外部高速时钟是由外部所提供的其是高速的,其具体可以是有源晶振或者无源晶振所提供的时钟。而在时钟树图中我们从OSC_IN、OSC_OUT进入,然后经过分频因子进行分频/M,在进入到锁相环(PLL)环节进行倍频xN(一般为最高值336),在进入到VCO时钟进行分频/P(一般为2),然后我们会得到锁相环时钟PLLCLK,经过开关(SW)选择SUSCLK时钟(168MHZ),设置我们AHB总线分频因子为1,APB2分频因子为2,APB1分频因子为4。经过一系列的过程我们就得到我们的系统时钟=168Mhz。AHB=168MHZ,APB2=84MHZ,APB1=42MHZ。

1、HES
HES即为外部高速时钟(High Speed External Clock)。来源多为外部,即有源或无源晶振。有源晶振的范围大致(1-50M),无源晶振的范围大致在(4-26M)。它是由RCC_CR 时钟控制寄存器的位16:HSEON控制。
2、HSI
HSI即为高速内部时钟(Low Speed Internal Clock signal)。主要来源于芯片的内部结构。大小为16M,当HSE故障时,系统时钟会自动切换到HSI,直到HSE启动成功。他的控制主要由 RCC_CR 时钟控制寄存器的位0:HSION控制。
3、锁相环时钟PLLCLK
它的时钟来源主要是HSI或者HSE。由PLLSRC位配置。根据stm32f4给的官方参考手册上,当PLLSRC位=0时选择HSI时钟为时钟源,当PLLSRC位=1时选择HES时钟为时钟源。HSE或者HSI先经过一个分频因子M进行分频,然后再经过一个倍频因子N,然后再经过一个分频因子P,最后成为锁相环时钟。公式一般为:
PLLCLK = (HSE/M) * N / P 。控制主要由 RCC_PLLCFGR :RCC PLL 配置寄存器控制。

4、系统时钟
系统时钟(SYSCLK),F4上一般最高为168MHZ。来源主要是由HSI、HSE,PLLCLK。控制方式主要是RCC_CFGR 时钟配置寄存器的SW位进行控制,主要方式有三种选择,最经常用的时钟配置还是选择PLL作为系统时钟。

5、HCLK时钟
是AHB高速总线时钟,一般F4上最高为168M。为AHB总线的外设
提供时钟、为Cortex系统定时器提供时钟(SysTick)、为内核
提供时钟(FCLK)。它主要是由系统时钟分频(1分频)所得到。
控制方式主要是RCC_CFGR 时钟配置寄存器的HPRE位所控制的。

6、PCLK1时钟
是APB1低速总线时钟,一般最高为42MHz,为APB1总线的外设提供时钟。
来源主要是由HCLK分频得到,通常配置为4分频。而他的控制方式主要是RCC_CFGR 时钟配置寄存器的PPRE1位。主要控制分频为4分频。

PCLK2时钟
是APB高速总线时钟,一般最高为84M,为APB2总线的外设提供时钟。
来源主要是好APB的低速总线时钟一样由HCLK分频得到,通常配置为2分频。控制方式主要是 RCC_CFGR 时钟配置寄存器的PPRE2位。一般设置为2分频。

其他的时钟
I2S时钟:由外部的引脚I2S_CKIN或者PLLI2SCLK提供。
以太网PHY时钟:407没有集成PHY,只能外接PHY芯片,
比如LAN8720,那PHY时钟就由外部的PHY芯片提供,大小
为50M。
USB PHY时钟:407的USB没有集成PHY,要想实现USB高
速传输,只能外接PHY芯片,比如USB33000。那USB PHY时
钟就由外部的PHY芯片提供。
总结:其实在stm32上给的官方参考手册已经给的很全的了,我们要多看一下手册。刚开始看或许会有些懵,但要相信我们多去看、多去理解这个还是可以啃下来的。
有些我可能分析的不是很好,有不好的地方请多多指正!!!
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
我正在使用Rails3.2.2并希望递归加载某个目录中的所有代码。例如:[Railsroot]/lib/my_lib/my_lib.rb[Railsroot]/lib/my_lib/subdir/support_file_00.rb[Railsroot]/lib/my_lib/subdir/support_file_01.rb...基于谷歌搜索,我试过:config.autoload_paths+=["#{Rails.root.to_s}/lib/my_lib/**"]config.autoload_paths+=["#{Rails.root.to_s}/lib/my_lib/**/"
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L
FPGA时钟和时钟域时钟树所谓时钟树为FPGA内部资源,分:全局时钟树,区域时钟树,IO时钟树原则上优先使用全局时钟树,在GT接口上使用IO时钟树,一般工具也会对GT时钟加以限制;时钟树使用方式正确的物理连接FPGA会由物理管脚专门用于全局时钟设置,通过查询数据手册可以在PCB设计阶段进行确认,当外部时钟接入此管脚时,工具会自动占有全局时钟树资源,当接入普通信号时不会分配时钟树资源;恰当的代码描述原语的使用,即BUFG的使用,可以将PLL的输出等内部时钟进行全局时钟资源的分配;IO时钟资源需要参考相应接口手册,以ultrascale的GTH为例,其JESD204的时钟方案针对不同的子类会由不同
目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方
有道无术,术尚可求,有术无道,止于术。本系列SpringBoot版本3.0.4本系列SpringSecurity版本6.0.2本系列SpringAuthorizationServer版本1.0.2源码地址:https://gitee.com/pearl-organization/study-spring-security-demo文章目录前言1.OAuth2AuthorizationServerMetadataEndpointFilter2.OAuth2AuthorizationEndpointFilter3.OidcProviderConfigurationEndpointFilter4.N
在我的代码中,我需要使用各种算法(包括CRC32)对文件进行哈希处理。因为我还在Digest系列中使用其他加密哈希函数,所以我认为为它们维护一个一致的接口(interface)会很好。为了记录,我确实找到了digest-crc,一颗完全符合我要求的gem。问题是,Zlib是标准库的一部分,并且有一个我想重用的CRC32工作实现。此外,它是用C编写的,因此它应该提供与digest-crc相关的卓越性能,后者是纯ruby实现。实现Digest::CRC32一开始看起来非常简单:%w(digestzlib).each{|f|requiref}classDigest::CRC32一切正常:
我正在尝试在我的机器上安装win32-apigem,但在构建native扩展时我遇到了一些问题:$geminstallwin32-api--no-ri--rdocTemporarilyenhancingPATHtoincludeDevKit...Buildingnativeextensions.Thiscouldtakeawhile...C:\Programs\dev_kit\bin\make.exe:***Couldn'treservespaceforcygwin'sheap,Win32error0ERROR:Errorinstallingwin32-api:ERROR:Failed