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