在單片機的使用中,經(jīng)常會接觸到復(fù)位電路,它是單片機最小系統(tǒng)重要的一個構(gòu)成部分。同樣它也是非常重要的一部分。
復(fù)位就是讓單片機從初始化狀態(tài)開始重新運行,即程序從頭開始執(zhí)行。復(fù)位電路設(shè)計的好壞,直接影響整個系統(tǒng)是否穩(wěn)定可靠。復(fù)位電路與單片機的RESET/NRST引腳相連,拿STM32系列單片機舉例,當(dāng)系統(tǒng)正常工作時,如果RESET引腳電壓低于某一閾值,則單片機進入復(fù)位狀態(tài)。單片機的復(fù)位可分為低電平復(fù)位和高電平復(fù)位,這是由廠家決定的,區(qū)分的方式可以看數(shù)據(jù)手冊,手冊中的復(fù)位章節(jié)會寫清楚是什么電平復(fù)位。單片機的復(fù)位可以分為:上電復(fù)位、掉電復(fù)位、軟件復(fù)位、外部手動復(fù)位等。
上電復(fù)位:單片機每次上電都會給RESET腳一個復(fù)位信號,讓單片機從一個固定的相同狀態(tài)重新開始工作;
掉電復(fù)位:單片機復(fù)位引腳電壓低于某一閾值電位時,單片機會進入復(fù)位狀態(tài)。
軟件復(fù)位:程序員執(zhí)行某一特定的復(fù)位指令,來使單片機進行復(fù)位,或者當(dāng)程序在一定時間失去響應(yīng)的情況下通過看門狗電路控制單片機進行復(fù)位。
外部手動復(fù)位可以通過一個復(fù)位按鍵讓死機或跑飛的程序重新運行。
下面我們一起看一下常見的幾種復(fù)位電路。
圖1圖1是最常見的低電平上電復(fù)位原理圖,我們來分析這個過程,上電前電容兩端電壓為0。上電后,電流從3.3V流經(jīng)電阻、電容到地,由于電容兩端電壓不能突變,所以上電瞬間RESET腳上電壓也為零,并保持一小段時間低電平,這段時間觸發(fā)單片機復(fù)位;隨著時間推移,電容兩端電壓太高超過某一閾值電位,復(fù)位完成。這個電阻、電容的取值大小影響到復(fù)位引腳電平的上升時間(電容的充電時間)。
圖2
圖2 手動按鍵復(fù)位原理圖,手動按鈕復(fù)位在GND和RESET之間接一個按鈕。當(dāng)人為按下按鈕時, RESET腳就會被GND拉為低電平,使單片機進入復(fù)位狀態(tài),如果手不松掉,那么會一直處于復(fù)位狀態(tài),直至手松掉之后,復(fù)位引腳電平恢復(fù)。
ST單片機內(nèi)部的復(fù)位波形,上電的時候VDD大于Vpor并持續(xù)一定的時間,單片機脫離復(fù)位狀態(tài),掉電的時候Vdd電壓低于Vpdr電壓,單片機進行復(fù)位。
軟件復(fù)位也分兩種,我們可以使用復(fù)位指令,直接使單片機進行復(fù)位,另外一種使用單片機內(nèi)置看門狗,配置啟動看門狗,在主循環(huán)程序中每隔一定的時間刷新看門狗,俗稱喂狗。如果一定的時間沒有喂狗,可以認為程序跑飛,則看門狗模塊會復(fù)位單片機,內(nèi)置看門狗又分窗口看門狗和獨立看門狗,區(qū)別如下:
時鐘不同1、獨立看門狗:獨立看門狗使用的是內(nèi)部專門的 40Khz低速時鐘,不需要使能時鐘操作。2、窗口看門狗:窗口看門狗使用的是 PCLK1的時鐘,使用前需要先使能時鐘。
中斷不同1、獨立看門狗:獨立看門狗沒有中斷,超時直接復(fù)位。2、窗口看門狗:窗口看門狗可以在中斷中做復(fù)位前的函數(shù)操作,比如報錯一些數(shù)據(jù)等。
使用場景不同1、獨立看門狗:獨立看門狗一般用于避免程序跑飛或者死循環(huán)。2、窗口看門狗:窗口看門狗避免程序不按預(yù)定邏輯執(zhí)行,比如先于理想環(huán)境完成,或者后于極限時間超時。
當(dāng)然復(fù)位衍生出來的電路形態(tài)可能不止上述的兩種,但是基本上都是圍繞上述的電路進行變換,最后強調(diào)一點,RESET的走線越短越好,復(fù)位電路一定要盡可能靠近MCU, 因為復(fù)位電路到單片機這一段的走線,可能會引入其他外界因素的干擾,是單片機處于不穩(wěn)定的狀態(tài)。關(guān)于復(fù)位的內(nèi)容就跟大家分享到這里,大家有沒有遇到過關(guān)于一些復(fù)位引起的問題呢?
編輯:jq
-
單片機
+關(guān)注
關(guān)注
6032文章
44514瀏覽量
632953 -
mcu
+關(guān)注
關(guān)注
146文章
16984瀏覽量
350294 -
reset
+關(guān)注
關(guān)注
0文章
34瀏覽量
12860
原文標題:【技術(shù)分享】單片機復(fù)位問題層出不窮?送你幾個錦囊妙計
文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論