STM32因為BOOT和時鐘造成的異常的除錯過程

2021-06-16 14:21:16 字數 616 閱讀 3971

前兩天朋友寄過來乙個stm32f103的板子讓我幫他除錯下:

先檢查電源,發現arm3.3v電源正常,試著連線了jtag,發現可以燒寫程式,但debug發現沒有跳轉到0x8000000位址,而是跳轉到了0x1fff020位址

這個應該是arm內部的廠家專用的位址,看了原理圖連線,發現hse的時鐘焊錯了,原理圖上是8m的晶振,焊接成了16m

另外boot0 引腳被置為1了,這樣啟動時就不會跳轉到flash了

boot0和boot1 stm32三種啟動模式對應的儲存介質均是晶元內建的,它們是: 1)使用者快閃儲存器=晶元內建的flash。 2)sram=晶元內建的ram區,就是記憶體啦。 3)系統儲存器=晶元內部一塊特定的區域,晶元出廠時在這個區域預置了一段bootloader,就是通常說的isp程式。這個區域的內容在晶元出廠後沒有人能夠修改或擦除,即它是乙個roromm區。 在每個stm32的晶元上都有兩個管腳boot0和boot1,這兩個管腳在晶元復位時的電平狀態決定了晶元復位後從哪個區域開始執行程式,見下表: boot1=xboot0=0從使用者快閃儲存器啟動,這是正常的工作模式。 boot1=0boot0=1從系統儲存器啟動,這種模式啟動的程 序功能由廠家設定。

取下了boot0引腳連線3.3v的引腳的電阻,換上8m的晶振,板子就可以正常執行了

STM32系統時鐘

1 參考資料 stm32f1開發指南 庫函式版本 4.3小節 時鐘系統 stm32中文參考手冊v10 第六章 復位和時鐘控制 rcc 2 時鐘系統知識總結 1 stm32有5個時鐘源 hsi hse lsi lse pll hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 hse是高速外部...

stm32系統時鐘

hsi 約等於8mhz rc振盪器產生的時鐘 hse 外部時鐘 css 如果檢測到外部時鐘的損壞,自動切換到hsi 系統時鐘和rtc時鐘 均有三個 systick定時器 簡單的定時器,常用來做延時和心跳時鐘 24位的倒計時定時器 ctrl暫存器 其實滴答定時器很簡單,就是設定初值,然後延遲,最後就是...

STM32中的BOOT功能

一 三種boot模式介紹 所謂啟動,一般來說就是指我們下好程式後,重啟晶元時,sysclk的第4個上公升沿,boot引腳的值將被鎖存。使用者可以通過設定boot1和boot0引腳的狀態,來選擇在復位後的啟動模式。step1 將boot0設定為1,boot1設定為0,然後按下復位鍵,這樣才能從系統儲存...