STM32学习心得——STM32外部晶振更换设置
之前小编申请了一个STM32免费的迷你板,调试串口通信时总是弄不好。后来发现大多数stm32采用的是8M的晶振,但是手里这块迷你版采用的是12M的晶振,其实STM32支持4—16MHz之内任何频点的晶振。于是想到了两个解决方案。第一个是改程序,第二个是换晶振。本着不乱改硬件的原则,决定开始更改程序。
keil 5
经过查资料得知,其实就是把system_stm32f10x.c里面的时钟设置改一下就行了,原本8*9=72。12M的晶振72/12=6。但是把响应位置改过了之后并没有成功。后来查倒stm32f10x.h里面也有时钟的设置。再次更改,依旧失败。最终到处查询后找到了问题所在——keil自身设置。
keil设置界面
下面我们就通过简单的三个步骤教大家怎更改外部晶振设置:
第一步,打开stm32f10x.h,将
#define HSE_VALUE ((uint32_t)8000000)
修改为:
#define HSE_VALUE ((uint32_t)12000000)
第二步,打开system_stm32f10x.c,修改PLL参数,将
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
修改为:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
第三步,打开你已经建立的STM32工程,选择Projects-〉Options for target ***,找到Target标签,你会发现,外接的晶振默认还是8MHz,我们将外接的晶振参数修改为12MHz。这样就完成了晶振频率的设置。
直击数字电路“强”心脏,10分钟读懂晶振
也许有人说晶振这玩意,呵,有什么好写的。
晶振内部结构是怎么样的?
晶振该怎么选择?
晶振的布局走线怎么办?
这些晶振问题,你都会吗?晶振产生的时钟被比喻成电路系统的心脏可不是随便说说的。今天重点给大家讲讲你熟悉又陌生的晶振。
在写这篇文章前,前去拜读了各家微信公众号的相关内容。关于晶振的文章很多,简要列几条:
石英谐振器简称为晶振;
按晶振的功能和实现技术分:TCXO、VCXO、OCXO;
晶振选择五要素:输出频率、频率稳定性和温度范围、输出电压和功率、输出波形、封装尺寸和外形;
我们必考课堂的视频中也花了一些时间给大家做了相关讲解。
好了,不长篇大论讲理论,小编直接上干货——晶振的必考知识点:
知识点一:5个要点搞定晶振电路PCB布线
位置要选对: 晶振内部是石英晶体,如果不慎掉落或受不明撞击,石英晶体易断裂破损,所以晶振的放置远离板边,靠近MCU的位置布局。
两靠近: 耦合电容应尽量靠近晶振的电源管脚,如果多个耦合电容,按照电源流入方向,依次容值从大到小摆放;晶振则要尽量的靠近MCU。
走线短: 在电路系统中,高速时钟信号线优先级最高,一般在布线时,需要优先考虑系统的主时钟信号线。时钟线是敏感信号,频率越高,要求走线尽量的短,保证信号的失真度最小。
高独立: 尽可能保证晶振周围的没有其他元件。防止器件之间的互相干扰,影响时钟和其他信号的质量。网传是300mil内不要布线,实际在设计中并没有如此严格。
外壳要接地: 晶振的外壳必须要接地,除了防止晶振向外辐射,也可以屏蔽外来的干扰。
知识点二:查晶振问题不可缺少的三要素
01,检查晶振本身
在运输、焊接过程中,都可能会导致晶振内部的水晶片的损坏。如果我们在焊接晶振时,焊锡温度过高,或者是菜鸟级别的焊接时间长,都会影响到晶振本身。如果晶振损毁,直接更换一个晶振,是查找晶振不起振的问题中最简单的。
02,物料参数值错误
比如STM32使用外部晶振32.768Khz晶振,电容的容值建议在5pf-15pf之间,如果我们选择不合适的容值,就会导致晶振不起振。
03,PCB布线问题
检查PCB布线是否存在错误,如真是这个问题,那影响就非常大了,这一版就会浪费掉,还要投入更多成本,项目周期也会增加。
别再小瞧晶振了,先记住今天的知识点吧。
相关问答
stm32外部晶振如何查询?
在你使用库函数的时候会判断外部晶振是否启动,然后执行相应的程序。HSEStartUpStatus=RCC_WaitForHSEStartUp();if(HSEStartUpStatus==SUCC...
stm32系统时钟的配置?
上面所给的程序是使用内部晶振的,而通常开发板都会使用外部晶振通过倍频使用。内部晶振最高只能倍频到64MHz,而使用外部晶振能够倍频到72MHz。如果板子上确实...
stm32最高时钟?
stm32F1系类最大72Mhz你可以超频用但是不一定能稳定可靠工作比方说你用8M晶振配置按照72M主频算,直接换成10M晶振主频自然就是90MFlashLeancy设到最...
proteus仿真晶振为啥没反应?
Proteus的强项是单片机仿真,电子电路尤其是振荡电路,是弱项。PROTEUS中不光晶振电路不易起振,而且RC、LC振荡电路也不易起振。问题在Proteus不适合做振荡,干...
STM32断电之后RTC的秒中断还会产生吗?
系统断电后(有电池),RTC是继续计时的,很准(这样看晶振是否准确)!断电后时间是不应该停止的,这是由于使用了8兆的晶振分频后得到的频率,或者加入了开发...系...
stm32启动的时候默认的是哪个时钟,是RC还是外部晶体?何以更改默认时钟么?
STM32启动时默认为内部RC震荡所以在使用的时候,首先要对时钟进行初始化等待外部晶振稳定后然后才对外部晶振进行分频或者倍频最后才是对APB总线时钟及模块...
stm32f407有没有函数可以读出时钟频率?
用于设置MCU的时钟,两个参数,前一个(OSC)用于选择...晶振的频率,这个值在stm32f4xx.h里面有定义的,...SysClockGet(void)函数用来获取当前MCU主频,返回值用...
STM32L432里面时钟配置时候的PLLM/PLLN/PLLR/PLLP/PLLQ都是什么意思?
STM32启动时默认为内部RC震荡所以在使用的时候,首先要对时钟进行初始化等待外部晶振稳定后然后才对外部晶振进行分频或者倍频最后才是对APB总线时钟及模块...
stm32tft时钟频率设置?
看你使用的MCU最高主频是否能跑到216MHz.确定你使用的外部晶振频率,如果未使用外部晶振,使用内部晶振也可以。时钟信号进来后一般都会进行除频,将频率降到...
STM32是什么啊,是32位的单片机吗-185****1270的回答-懂得
stm32是一种32位的单片机。单片机是嵌入式系统中最常用的核心部件,stm32本质上也是一种单片机。从事嵌入式方面工作,如果有一定的基础,可以从STM32...