STM32F4的时钟系统的实现方法

众所周知,时钟系统是cpu的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。stm32f4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么stm32要有多个时钟源呢?因为首先stm32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及rtc只需要几十k的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的mcu一般都是采取多时钟源的方法来解决这些问题。
三种不同的时钟源可被用来驱动系统时钟(sysclk)
hsi振荡器时钟
hse振荡器时钟
pll时钟
这些设备有以下两种二级时钟源:
32khz低速内部rc,可以用于驱动独立看门狗和通过程序选择驱动rtc。rtc用于从停机/待机模式下自动唤醒系统。
32.768khz低速外部晶体也可用来通过程序选择驱动rtc(rtcclk)。
由时钟控制器的时钟树可以看出,stm32f4在应用中可以选择外部晶体或者内部rc振荡器来驱动内核和外设,像以太网,usb,i2s和sdio需要专用时钟。ahb总线最高支持168mhz的时钟,通过ahb总线分频,apb2最高支持84mhz,apb1最高支持42mhz。
所有的外设驱动全部来自sysclk除了下面几个:
usbotgfs的时钟(48mhz)、随机信号发生器时钟(《=48mhz)和sdio时钟(《=48mhz)全部来自pll48clk。
i2s时钟,为了达到高性能的要求,i2s时钟可以用内部时钟plli2s或者使用外部时钟,通过i2s_clkin引脚输入得到。
usbotghs(60mhz)需要外部phy芯片提供。
以太网时钟(tx,rx和rmii)也需要外部phy芯片提供时钟。
rcc通过ahb时钟(hclk)8分频后作为cortex系统定时器(systick)的外部时钟。通过对systick控制与状态寄存器的设置,可选择上述时钟或cortex(hclk)时钟作为systick时钟。定时器时钟频率分配由硬件按以下2种情况自动设置:
如果相应的apb预分频系数是1,定时器的时钟频率与所在apb总线频率一致。
否则,定时器的时钟频率被设为与其相连的apb总线频率的2倍。

台商大厦中有关变电站运维云平台设计与应用
2012年太阳能电池破产企业将增加
苹果以前没能摆脱对三星OLED面板依赖的原因是什么?
ARM推出iSIM新技术将SIM卡集成进设备的处理器
泰克支持亚马逊(AWS)媒体服务,为端到端视频提供质量保证
STM32F4的时钟系统的实现方法
多功能食品安全检测仪可促进生活饮食的健康发展
诺基亚8在俄罗斯得到认证?是不是传闻已久的旗舰呢
关于itc可视化分布式综合管理系统的核心技术分析
霍尔传感器输出电压不同如何检修
索尼正在准备为游戏玩家推出一款带有情感的实体机器人
英特尔的Intel 4工艺详述
新基建加速推进,物联网行业机遇再现
多抵押Dai存款利率与其他DeFi平台比较有什么特点
太阳能路灯不亮了是什么原因?
新型泡沫喷射机器人可帮助消防员进行远程救火
iQOO Pro写入速度提升110%,全平台销售额破2亿
索尼新机Xperia 8现身跑分库,分数有些不科学
解析人工智能在网络安全中的偏见与漏洞
智能家居选WiFi模块,是馅饼还是陷阱?