历史上的今天
今天是:2025年04月23日(星期三)
2021年04月23日 | STM32再学习——时钟初始化
2021-04-23 来源:eefocus
STM32F系列微处理器,或者说是Cortex-M3内核的MCU内,都集成了一个叫PLL的东西。PLL就是锁相回路或锁相环(PhaseLockedLoop),用来统一整合时脉讯号,使内存能正确的存取资料。PLL用于振荡器中的反馈技术,将外部的输入信号与内部的振荡信号同步,锁相环路的基本方框图如下图所示。一句话,PLL用来控制STM32F的时钟频率的。总而言之,STM32F系列MCU使用了这个东西,而我们在MCU上电之后,也就要对其正确的初始化,这样,我们才能得到我们需要的时钟配置。
本文引用地址:http://www.eepw.com.cn/article/182408.htm

在ST公司的外设固件库的示例里,对于工程项目文件,ST并没有在启动函数main()里初始化PLL,因为其已经在硬件初始化阶段完成对系统时钟的配置。这样也就带了一个问题,ST库里的均使用了外设8MHz的晶振,而我们平时的项目就一定采用的是这个频率,实际配置的低于8MHz,MCU不能全速运行,高于8MHz,外设时钟即配置失败,甚至无法运行。那么如何重新配置时钟就需要我们一线的工程师们重新设计了。
ST库里的硬件初始化阶段的代码是用寄存器方式编写的,不利于我们阅读与参考。也正是出于这个原因,小编使用库函数重新编写了STM32F系统时钟PLL初始化过程,与大家分享,期待共同提高与进步。
/*********************************************************************************************************
**Functionname:staticvoidSysClockInit(void)
**Descriptions:配置SYSCLK,HCLK,PCLK2与PCLK1
**Createdby:JobsZheng
**CreatedDate:2013-03-0609:35
*********************************************************************************************************/
staticvoidSysClockInit(void)
{
RCC_DeInit();/*RCC重置*/
RCC_HSEConfig(RCC_HSE_ON);/*(使能HSE)*/
HSEStartUpStatus=RCC_WaitForHSEStartUp();/*(等待HSE使能结束)*/
if(HSEStartUpStatus==SUCCESS)
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
RCC_HCLKConfig(RCC_SYSCLK_Div1);/*配置HCLK=SYSCLK*/
RCC_PCLK2Config(RCC_HCLK_Div1);/*配置PCLK2=HCLK*/
RCC_PCLK1Config(RCC_HCLK_Div2);/*配置PCLK1=HCLK/2*/
/*超级重要的、需要配置的地方在这里*/
/*PLLCLK=8MHz*9=72MHz*/
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);/*RCC_PLLSource_HSE_Div1为外置晶振的分频系数;RCC_PLLMul_9为倍频数*/
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
{
}
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/*选定PLL为系统主时钟*/
while(RCC_GetSYSCLKSource()!=0x08)
{
}
}
else
{/*配置失败将程序停留在这里*/
while(1)
{
}
}
}
上述C语言的文件仍需要#include"stm32f10x.h"的头文件来调用ST固件库。
就像ST官方说明文档所说,STM32F系列MCU支持4M-16MHz的外置晶振,因此,大家在没有官方默认的8Mhz晶振下,大可不必苦恼,只需要添加上面的这个初始化函数,你就可以任意使用外置晶振了。
祝大家工作顺利,编程快乐^_^
上一篇:STM32与SD卡通信分层思考
下一篇:基于STM32的智能笔筒设计
史海拾趣
|
变频彩电、变频技术与逐行扫描技术 变频彩电是近几年新推出的一种无闪烁、高清晰度彩电,收视效果可与HDTV相媲美,它能够兼容数字和模拟电视标准,可以接收普通电视信号,并显示比普通电视清晰度更高、更稳定的图象;也能作为数字电视信号的显示器。因 ...… 查看全部问答> |
|
从上世纪八十年代以来,医疗行业引进了许多先进的大型电子仪器及设备, 大到0)、核磁等,小到各种彩超、监护仪等。 随着它们的所有年限增加,陆续地从保修期进入了维修期,也有一些的设备已经进入了维修高峰期。这一点和国外发达国家医疗设备服役 ...… 查看全部问答> |
|
GPRS链接上服务器后,接收数据几秒或几分钟就call ready重启了,我观察了一下出现call ready的时间间隔,没规律,随机,说明服务器没问题,用万用表测电源也没感到有问题(偶看到以前几位仁兄的帖子了),CIPSTATUS查询状态,是IP INITIAL,除了电 ...… 查看全部问答> |
|
请教各位大侠关于SignalTapII应用的一个小问题。 看过一些教程,应用SignalTapII的时候直接将工程和sof文件一起编译下载到FPGA中。 那要怎样去设置输入信号的数值呢。 我要做的设计是一个编码器,需要在特定的测试用例下观测输出结果。 而调入S ...… 查看全部问答> |
|
我们在选电容的时候最关注两个指标,一个是耐压值,一个是ESR。耐压值大家都知道,要是耐压值低于工作电压,电容会爆掉。但是ESR我就搞不清楚了,ESR到底是什么意思呢?ESR越小越好么?为啥要这样子哩?… 查看全部问答> |




