基于stm32的8m晶振不起振的原因解析

发布时间:
来源: 电子工程世界

STM32板子突然出了大问题。所以延时函数都变慢9倍。

我的延时函数是用的SysTick函数精确延时。


因为第一步需要初始化时间,一般8M的晶振我们都要初始化72.因为系统一般都是倍频9倍的。

但是今天貌似是系统没有倍频9倍。

所以才导致整体时间是原来9倍长。

后来发现倍频是在

RCC_HSEConfig(RCC_HSE_ON);

HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS)

成功后才设置的如果HSEStartUpStatus不等于1那么就不会执行倍频。也就是说只能使用内部自带的8M晶振了。

后来单步调,发现确实是这个HSEStartUpStatus一直为0.也就是一直没有检查到外部晶振。

于是乎我们开始确实晶振是不是没有起振。

用了示波器,确定确实是晶振没有起振。

那么是晶振问题还是板子问题呢。

以前的电路一直都是这么花的,而且都没出现过问题。

换了一个晶振还是有问题。

难道是电容问题。

以前都是用22P的电容。

于是都换成20P居然就好了。

还是有点不解,理论上电容应该不会有这么大的影响。

不过问题是解决了。

希望大家如果遇到相同的问题,可以试着换一下电容。


晶振不起振原因分析:

(1) PCB板布线错误;

(2) 单片机质量有问题;

(3) 晶振质量有问题;

(4) 负载电容或匹配电容与晶振不匹配或者电容质量有问题;

(5) PCB板受潮,导致阻抗失配而不能起振;

(6) 晶振电路的走线过长。


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。