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

电子说

1.2w人已加入

描述

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) 晶振电路的走线过长。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分