STM32F407接上外部晶振后无法运行程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F407接上外部晶振后无法运行程序相关的知识,希望对你有一定的参考价值。
自己绘制的STM32F407ZGT6的板,采用的是和正点原子类是的原理图,可是如果接上8MHZ的无源晶振,LED0灯就一直亮着(芯片的程序是LED0和LED1两个灯以0.5S的时间间隔亮起),如果去掉8MHz的晶振,LED0和LED1两个灯会以大概5S的时间间隔亮起用示波器测量发现8MHZ的无源晶振在开启是时候会有时钟,但是开启几秒后就没有了按键复位部分是正常的!将晶振部分的22pf换成10pf也是一样!不知哪位大神知道怎么回事?
参考技术A 你的时钟配置文件搞错了。启动文件或者初始化文档里看看。RCC->CR|=0x00010000; 使能外部高速时钟,由时钟控制寄存器(RCC_CR)的第16位控制追问
程序是没有问题的!
我现在PCB板子上面放置的芯片是从其他板子上面取下来的,在之前的板子上面写入流水灯实验显示是正常的!
我现在怀疑是不是程序总是在自动重启,因为我接8MHZ晶振后LED0灯比较暗,但是我不接晶振LED0灯很亮,感觉很有可能是因为接了8MHZ晶振后它总是以一定频率自动重启才导致灯光比较暗!
如果总是自动重启,可能会是什么影响的?
无法具体告知你原因,但可以试试以下方法:
接上外部晶振, 而在软件里面设置使用内部时钟, 就写一个LED跳变程序,其它程序不要使用. 看看结果如何?
如果使用一步的方法,能达到自已所设计的参数; 就接上外部晶振,而在软件里面设置使用外部时钟,用上面的程序测试,不要用肉眼去看,一定要使用示波器测量LED IO口输出状态, 有的时候是你时钟分频不对,导致时钟过快,LED看不出来是在闪.但用示波器能看出IO口输出的频率. 在这一步的时候一定要重建一个工程,你写的程序必须保证仅仅只有时钟配置程序/LED控制程序;别的地方没有你写的程序(这样的好处是仅二个地方排查起来方便).
仔细核对外部时钟配置函数,及相应分频配置函数.
产生这种问题一般都是软件里面时钟部份配置不对所产生的. 集中火力攻时钟配置函数这一块.
我的回答希望能帮到你.
关机重启后,晶振就不起振了,急!
主板MCU是ATMEL的AT91M55800,晶振用了两个:一个是32.768KHz的,一个是16MHz。其中16M晶振在关机重启后就不起振了,重新换一个就可以正常工作了,电容用的22pF,谁知道这是怎么回事?
参考技术A 电容损害,内部存储电量过少,或者自身老化导致追问那时负载电容的容量过小吗?一般大于30pF的晶振负载电容好想没用过。
追答说明电容完全不冲放电,晶振起震环境条件不具备
参考技术B 晶振坏了吧,电容只有大了不起振,基频的100p应该都可以。 参考技术C 请找晶振销售商,日本KDS上海唐辉电子,FAE小胡,他知道晶振不起振的原因!以上是关于STM32F407接上外部晶振后无法运行程序的主要内容,如果未能解决你的问题,请参考以下文章
STM32F407外部晶体改为25M后检测不到芯片的解决办法