stm32的基本系統主要涉及下面幾個部分:
一、電源
1)、無論是否使用模擬部分和ad部分,mcu外圍出去vcc和gnd,vdda、vssa、vref(如果
封裝有該引腳)都必需要連線,
不可懸空
;2)、對於每組對應的vdd和gnd都應至少放置乙個104的陶瓷電容用於濾波,並接該
電容應放置盡量靠近mcu;
3)、用萬用表測試供電電壓是否正確。除錯時最好用數字電源供電,以便過壓或過流燒壞板子。電壓最好一步一步從進線端測試到晶元供電端。
二、復位、啟動選擇
1)、boot引腳與jtag無關。其僅是用於mcu啟動後,判斷執行**的起始位址;
2)、在電路設計上可能boot引腳不會使用,但要求一定要外部連線電阻到地或電源,切不可懸空;
stm32三種啟動模式對應的儲存介質均是晶元內建的,它們是:
1)使用者快閃儲存器 = 晶元內建的flash。
2)sram = 晶元內建的ram區,就是記憶體啦。
3)系統儲存器 = 晶元內部一塊特定的區域,晶元出廠時在這個區域預置了一段bootloader,就是通常說的isp程式。這個區域的內容在晶元出廠後沒有人能夠修改或擦除,即它是乙個rom區。
在每個stm32的晶元上都有兩個管腳boot0和boot1,這兩個管腳在晶元復位時的電平狀態決定了晶元復位後從哪個區域開始執行程式,見下表:
boot1=x boot0=0 從使用者快閃儲存器啟動,這是正常的工作模式。
boot1=0 boot0=1 從系統儲存器啟動,這種模式啟動的程式功能由廠家設定。
boot1=1 boot0=1 從內建sram啟動,這種模式可以用於除錯。
用jtag口或swd模式燒寫 選擇從使用者快閃儲存器啟動。
用串列埠isp模式燒寫程式時時選擇從系統儲存啟動
三、燒寫介面
如果要減小插座的數量,就用swd模式的**,在這個模式下,如果用jlink只要四根線就可以了,這四根線分別是:3.3v、gnd、swdio、swclk,其中reset引腳可接可不接。
其中:stm32的jtms/swdio接jtag口的tms;
stm32的jtck/swclk接jtag口的tck。
如果要用ulink2,則再加多一條「nrst」,即5條。
四、除錯燒錄失敗的常見原因
1、目標晶元沒有正確連線,不能正常工作:
解決方法:確保目標板的最小系統正確連線,晶元能正常工作:vdd、vdda及vss 、vdds已全部正確連線,復位電路能夠可靠復位,各復位源不互相影響。
2、晶元內原先燒錄的**影響了新的除錯操作:
晶元內原先燒錄的**出錯,晶元上電執行,進入未定義狀態,不能進入除錯模式。晶元內原先燒錄的**啟動了某些外設,或者將swj引腳配置為普通i/o口。
解決方法:選擇晶元的boot0/boot1引腳從ram啟動,或先擦除晶元內**。
3、晶元已被讀/寫保護:
除錯工具不能讀寫晶元內建的flash。
解決方法:先使用除錯工具解除晶元的讀/寫保護。
STM32硬體除錯詳解
stm32的基本系統主要涉及下面幾個部分 一 電源 1 無論是否使用模擬部分和ad部分,mcu外圍出去vcc和gnd,vdda vssa vref 如果封裝有該引腳 都必需要連線,不可懸空 2 對於每組對應的vdd和gnd都應至少放置乙個104的陶瓷電容用於濾波,並接該電容應放置盡量靠近mcu 3 ...
STM32除錯問題
1 stm32用iar除錯出現error pe020 identifier file is undefined 解決方法 需要在 iar的options general options library configuration裡設定一下函式庫,不然printf函式不對,將library confi...
STM32簡單例程除錯
一 按鍵例程 key.c檔案 如下 按鍵初始化相當於gpio口的配置。步驟 時鐘設定,輸入輸出設定,io口屬性設定 include include key.h include delay.h 修改說明 按鍵初始化 void key init void 按鍵處理函式 返回按鍵值 u8 key scan...