1. 程式人生 > >STM32外部晶振不起振

STM32外部晶振不起振

晶片: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相當於電阻很小,直通。。。所以不起振。。