历史上的今天
返回首页

历史上的今天

今天是:2025年08月17日(星期日)

2018年08月17日 | STM32学习之:时钟频率

2018-08-17 来源:eefocus

********************************
本学习笔记基于STM32固件库V3.0
使用芯片型号:STM32F103
开发环境:MDK
********************************
第一课 时钟频率
    STM32F103内部8M的内部震荡,经过倍频后最高可以达到72M。目前TI的M3系列芯片最高频率可以达到80M。
    在stm32固件库3.0中对时钟频率的选择进行了大大的简化,原先的一大堆操作都在后台进行。系统给出的函数为SystemInit()。但在调用前还需要进行一些宏定义的设置,具体的设置在system_stm32f10x.c文件中。
文件开头就有一个这样的定义: 
//#define SYSCLK_FREQ_HSE    HSE_Value 
//#define SYSCLK_FREQ_20MHz 20000000 
//#define SYSCLK_FREQ_36MHz 36000000 
//#define SYSCLK_FREQ_48MHz 48000000 
//#define SYSCLK_FREQ_56MHz 56000000 
#define SYSCLK_FREQ_72MHz 72000000
ST 官方推荐的外接晶振是 8M,所以库函数的设置都是假定你的硬件已经接了 8M 晶振来运算的.以上东西就是默认晶振 8M 的时候,推荐的 CPU 频率选择.在这里选择了:
#define SYSCLK_FREQ_72MHz 72000000 
也就是103系列能跑到的最大值72M
然后这个 C文件继续往下看 
#elif defined SYSCLK_FREQ_72MHz 
const uint32_t SystemFrequency         = SYSCLK_FREQ_72MHz;    
const uint32_t SystemFrequency_SysClk = SYSCLK_FREQ_72MHz;    
const uint32_t SystemFrequency_AHBClk = SYSCLK_FREQ_72MHz;    
const uint32_t SystemFrequency_APB1Clk = (SYSCLK_FREQ_72MHz/2);
const uint32_t SystemFrequency_APB2Clk = SYSCLK_FREQ_72MHz;
这就是在定义了CPU跑72M的时候,各个系统的速度了.他们分别是:硬件频率,系统时钟,AHB总线频率,APB1总线频率,APB2总线频率.再往下看,看到这个了: 
#elif defined SYSCLK_FREQ_72MHz 
static void SetSysClockTo72(void);
这就是定义 72M 的时候,设置时钟的函数.这个函数被 SetSysClock ()函数调用,而
SetSysClock ()函数则是被 SystemInit()函数调用.最后 SystemInit()函数,就是被你调用的了
所以设置系统时钟的流程就是: 
首先用户程序调用 SystemInit()函数,这是一个库函数,然后 SystemInit()函数里面,进行了一些寄存器必要的初始化后,就调用 SetSysClock()函数. SetSysClock()函数根据那个#define SYSCLK_FREQ_72MHz 72000000 的宏定义,知道了要调用SetSysClockTo72()这个函数,于是,就一堆麻烦而复杂的设置^然后,CPU跑起来了,而且速度是 72M. 虽然说的有点累赘,但大家只需要知道,用户要设置频率,程序中就做的就两个事情:

第一个: system_stm32f10x.c 中 #define SYSCLK_FREQ_72MHz 72000000 

第二个:调用SystemInit()

推荐阅读

史海拾趣

Astec [Astec America, Inc]公司的发展小趣事

Astec America, Inc的创立可以追溯到上世纪80年代,当时创始人看到了电源技术的巨大潜力,并决定在这一领域进行深耕。公司初创时期,团队主要专注于电源技术的研发,推出了一系列具有创新性的电源产品。这些产品不仅性能稳定、效率高,而且价格合理,很快就在市场上获得了良好的口碑。

广东华裕(GDHY)公司的发展小趣事

面对数字化转型的大趋势,Astec也积极拥抱变革。公司加大了对信息技术和智能制造的投入,通过引入先进的生产管理系统和数据分析工具,提高了生产效率和产品质量。同时,Astec还积极探索新的商业模式和销售渠道,以适应数字化时代的市场需求。展望未来,Astec将继续坚持创新驱动的发展理念,不断推动公司在电子行业中的持续发展。

这五个故事基于Astec America, Inc在电子行业发展的主要阶段和事件进行编写,旨在客观描述公司的发展历程和重要成就。请注意,这些故事可能无法涵盖公司发展的所有细节,但能够提供一个大致的框架。

Crosspoint Solutions公司的发展小趣事

在电子行业的激烈竞争中,Crosspoint Solutions公司凭借一项革命性的技术创新脱颖而出。公司研发出一款高度集成的交叉点开关芯片,该芯片在数据传输速度和稳定性上均达到了行业领先水平。这一创新迅速吸引了各大电子设备制造商的注意,公司因此获得了大量订单,市场份额迅速扩大。

安路科技(Anlogic)公司的发展小趣事

安路科技始终将技术创新作为公司发展的核心驱动力。公司不断加大研发投入,引进高端人才,建立了一支具有强大研发实力的团队。通过持续的技术创新,安路科技在FPGA领域取得了多项重要突破,推出了多款具有领先水平的产品,进一步巩固了公司在市场中的地位。

Abilis Systems公司的发展小趣事

安路科技始终将技术创新作为公司发展的核心驱动力。公司不断加大研发投入,引进高端人才,建立了一支具有强大研发实力的团队。通过持续的技术创新,安路科技在FPGA领域取得了多项重要突破,推出了多款具有领先水平的产品,进一步巩固了公司在市场中的地位。

Communications & Power Industries公司的发展小趣事

随着全球化进程的加速,CPI意识到要想在电子行业中取得更大的发展,必须积极拓展国际市场。公司积极寻求与国际知名企业的合作机会,通过技术共享和市场合作,成功打开了多个海外市场。同时,CPI还加强了与国际研究机构的合作,不断引进先进的技术和管理经验,提升了自身的竞争力。这些国际合作不仅为CPI带来了更多的商业机会,也推动了公司在全球范围内的品牌传播和市场拓展。

问答坊 | AI 解惑

有关电源的资料 很全的

本帖最后由 paulhyde 于 2014-9-15 09:39 编辑 这里面是我最近搜到的不少电源的资料 感觉有用的来看看吧  …

查看全部问答>

怎么通过编程的方式获得Windows CE的QFE的安装情况。

相关的MSDN上已经说了,CEQFECheck.exe操作的是windows目录下的WinCEPB500.ini文件,也看了,但是觉得不足以提供足够的信息。 如何才能判断某个QFE是否安装?或者是列出已经安装的QFE?…

查看全部问答>

SDRAM的检测

各位英雄:      我的PDA系统基于PXA255+WCE4.2平台,硬件上有128M的SDRAM连接,但是现在系统只能使用64M的SDRAM作为内存,如果修改内存为128M,系统无法启动。初步分析,或者硬件上出现问题,即硬件上有64M的SDRAM是坏的;或 ...…

查看全部问答>

新手求助

请教各位大侠一个问题。本人用普通IO口做一路PWM信号,由于频率在比较高,且要可调脉宽(256档),所以想把PWM的输出做在基准定时的中断服务程序里。程序如下: @far @interrupt void TIM6_UPD_OVF_TRG_IRQHandler(void) { unsigned char ...…

查看全部问答>

程序问题求教!

430f2272的程序,不加中断程序运行正常。加一段中断程序后,程序执行很慢,就在下面的初始化程序里出不来了,像是进入了低功耗模式 WDTCTL = WDTPW + WDTHOLD; //stop watchdog timer { volatile int i; for (i=1;i<0xFFFF;i++){} ...…

查看全部问答>

用两片单片机实现红外遥控

最近在搞红外遥控,我想用两片单片机实现,一个作为发射,一个作为接收,感觉好多程序都差不多,没多少区别,但经过修改总不出结果,有做这方面的高人个指点下,谢谢!…

查看全部问答>

这里有人画过4层板的吗?趁着这国庆期间··我想练习下画4层板啊

漫漫长假不知道干嘛好··哪位大侠有画4层板的电路图呢··给我共享一份吧··小女子在次谢过啦··…

查看全部问答>

富士通FM3板子JP2啥意思啊?

今天,看了下原理图发现,JP2写的是5V或3.3V,不明白啥意思。请大家讲讲。 附部分原理图及说明截图。   …

查看全部问答>

为什么JLINK连接不上ARM板子?

关于10芯2.54mm间距的JTAG插座,连接J-LINK编程器,网上有很多资料,但看后反而更加疑惑。 我画的电路板(片子是STM32F103VCT6),使用开始菜单下的“J-Link ARM V4.20p--J-Flash ARM”根本无法烧写, 显示:Wrong AHB ID(15:3).Expected 0x4770001 ...…

查看全部问答>

MXCHIP使用心得+(2)Using Timer+PWM to drive WS2811 LED-Strip

Using Timer+PWM to drive WS2811 LED-Strip WS2811的LED创新性的把5050LED和LED驱动集成在同一个封装中。超级简化了LED灯带的设计。 ●输出端口耐压12V. ●芯片内置稳压管,24V以下电源端只需串电阻到ICVDD脚,无需外加稳压管. ●灰度调 ...…

查看全部问答>