STM32外部晶振不起振

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33559992/article/details/83009134

芯片:STM32F429
开发平台:Keil
问题:
STM32外部晶振不起振,选择了内部16MHZ,从而导致延时函数、波特率、定时器等等有问题。

有源晶振和无源晶振的区别

  • 有源晶振一般4个脚,一个电源,一个接地,一个信号输出端,一个NC(空脚)。有个点标记的为1脚,按逆时针(管脚向下)分别为2、3、4。
  • 无源晶振有2个引脚,需要借助于外部的时钟电路(接到主IC内部的震荡电路)才能产生振荡信号,自身无法振荡.

单片机外部晶振接的是无源晶振,因此必须首先烧写程序进去,配置好相应的寄存器,晶振才会起振。如果没有烧写程序的新单片机(未配置寄存器)则不会起振。
在这里插入图片描述

由于我烧写过程序,并且程序在跑,只是时钟不对。因此进入DEBUG中查看,

RCC_ClocksTypeDef get_rcc_clock;
RCC_GetClocksFreq(&get_rcc_clock);

通过以上函数获取系统时钟:
在这里插入图片描述
PS:这个是正确的贴图,错误的时候Sysclk = 16Mhz.
然后,单步调试,发现RCC->CR寄存器的HSERDY标志未置1。也就是说,外部高速时钟未就绪。卡死在了while(1);
在这里插入图片描述

后面测量时钟的外围电路:
在这里插入图片描述
R52电阻本应为10M.测量发现是30R.(PS:汗颜。。)
替换为10M --> 上电,正常。。。
PS: 该电阻也可以不用焊接,30R相当于电阻很小,直通。。。所以不起振。。

猜你喜欢

转载自blog.csdn.net/qq_33559992/article/details/83009134