大家好,之前我画了一块带有STM32F103VCT6、CH340g的板子,但是出现了和时钟、晶振有关的一些问题(反复调试后的总结,但不是很清楚)。我想描述一下问题现象和我的设计图,希望对晶振、STM32时钟系统了解的朋友们能给出解答,谢谢!
现象:运行原子例程中基于systick的delay函数时,耗时约为正常情况的10倍。
我想排除软件的原因,因为同样的代码在原子的精英版(STM32F103ZET6)上运行时完全没有任何问题。我把我之前在另一块正常的STM32F103VCT6板子上能跑的代码(时钟无异常)放到这块板子上,也变成了这种低速的形态。
我的猜想是晶振问题,晶振部分的原理图如下,很朴素,没什么好纠结的(整个芯片只连了这么一个晶振)。所以当时觉得是晶振本身的问题了。。我冒着板子被拆坏的风险,取下了原来的晶振,换了一个新的(下图是换了一个新的8MHz晶振后的板子),还是无济于事。。我没有从同一个厂家买晶振,这两家晶振都是次品的概率应该不大吧。。哎,所以只能求助于大家了。 一个小细节:1.当我在原子例程的基础上,将时钟源改为HSI时,delay函数的延时变正常了,可是部分外设(定时器的延时)和外部中断的触发反倒出现了问题。我之前请教一位朋友时,他说我用HSE时delay不对的原因可能是,HSE的8M时钟原本应该9倍频得到72M,但是HSE出了问题,STM32的系统时钟监测到故障后自动将时钟源切换为8M的HSI,导致系统时钟的频率只有预期的1/9。我觉得他的分析有道理,但并没有给出解决HSE问题的方案。
|