99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

淺談STC單片機看門狗的作用和使用

淺談STC單片機看門狗的作用和使用成都控制器開發

有的控制器的運行環境是很復雜的,比如可能突然來個電壓,突然來個浪涌,周圍存在的強電磁場也可能交替對控制器造成沖擊,也有可能外部器件出現錯誤很久不響應,這樣就有可能讓單片機的程序跑飛,或者進入死循環出不來,那這就完蛋了。怎么辦呢?

一個簡單的辦法就是使用單片機內部的看門狗。現實中的看門狗的話,你要是不定時喂狗,它就咬你,單片機里的看門狗的話,你要是不定時給看門狗計時器清零或者寫入特定數據,它就讓單片機復位。

看門狗,又叫 watchdog,從本質上來說就是一個定時器電路,一般有一個輸入和一個輸出,其中輸入叫做喂狗,輸出一般連接到另外一個部分的復位端,一般是連接到單片機。看門狗的功能是定期的查看芯片內部的情況,一旦發生錯誤就向芯片發出重啟信號。看門狗命令在程序的中斷中擁有最高的優先級。這是個很有用的功能,可以監測程序是否按照預訂的順序或者周期循環在運行,一旦出現異常就復位,可以防止單片機出現異常跑飛和死機等情況。

1.看門狗有什么作用

用于防止程序跑飛,或者防止因為意外使程序進入死循環等。

2.看門狗怎么工作

當單片機看門狗運行時,假如在規定的溢出時間內給看門狗清零或者寫入特殊指令(喂狗),那么程序正常按預設的邏輯和順序運行,假如沒有在規定時間給看門狗清零,那么單片機復位,程序從頭開始運行。

3.怎么使用看門狗

以STC15單片機為例:

STC15單片機看門狗的使用重點就是操作看門狗寄存器WDT_CONTR。

l 看門狗的寄存器WDT_CONTR

寄存器WDT_CONTR是個8位的寄存器,各位的功能如下:

    在使用看門狗時,EN_WDT、CLR_WDT、IDLE_WDT、PS2-PS0這幾個二進制位是比較重要的,其中EN_WDT用于看門狗的啟停控制,CLR_WDT用于看門狗計時器清零,IDLE_WDT用于設置單片機“空閑模式”時看門狗是否工作,PS2-PS0用于設置看門狗的溢出時間。

l 怎么計算看門狗的溢出時間

看門狗的溢出時間是個重要參數,因為你要在程序里小于這個時間喂狗,才不會導致單片機復位。

看門狗的溢出時間與系統晶振和分頻系數有關系,部分晶振和分頻值對應的溢出時間如下:

STC15單片機看門狗的使用步驟:

(1)根據程序循環周期、晶振,配置看門狗的分頻系數(即設置WDT_CONTR的低3位B2、B1、B0),以確定看門狗的溢出時間(溢出時間見圖 2),一般喂狗時間要遠小于溢出時間最好。

(2)設置單片機在空閑模式時看門狗是否計數(即設置WDT_CONTR的B3位),這位0或者1其實沒什么影響,畢竟在空閑模式很多功能都停了,看門狗再繼續工作意義也不是很大。

(3)啟動單片機的看門狗(即設置WDT_CONTR的B5位為1)。

(4)在程序里定時將單片機的看門狗計數值清零(喂狗)。假如超出溢出時間程序里沒進行喂狗的話單片機將復位。

以上設置步驟,可用位運算指令對WDT_CONTR的某些位進行操作。

看門狗配置(第1-3步)也可以在STC下載軟件里進行:

一個參考程序:

#include "STC15F2K60S2.h" //載入STC15單片機頭文件

void main()//主程序

{

WDT_CONTR=0x36; //看門狗設置:0x36->二進制為0011 0110,表示打開看門狗,看門狗計時器清零,空閑模式不計數,分頻系數128(在11.0592mhz下溢出時間約4.55s)

while(1)//循環程序

       {

       WDT_CONTR|=0x10;// 在主循環里喂狗(看門狗計時器清零),注意循環喂狗的周期不能超出看門狗溢出時間,否則復位

       }

}

來解釋一下以上程序的重點,程序中 “WDT_CONTR=0x36”的說明如下表:

程序中“WDT_CONTR|=0x10”表示對WDT_CONTR 的B4位與“1”或運算,即B4置1,表示看門狗計時器清零(喂狗),說明如下表:

“/”表示保持原來不變。

注意:

喂狗的方式有很多,可以主循環里喂狗,定時器里喂狗等,一般建議主循環里喂狗。要想看門狗正常工作,要正確估算程序運行時間,保證喂狗周期一般要遠小于看門狗溢出時間,而且還得滿足系統工作使用狀況的要求。實在不行可以程序段里多處喂狗。

不同的單片機喂狗方式不一樣,有的可能不是給看門狗定時器清零,有的是往指定寄存器寫特殊數據,這需按其手冊操作。

4.什么情況適合使用看門狗

(1)在現場環境干擾較大,容易導致單片機死機時;

(2)程序里使用了較多while, do……until等指令時等情況。

簡單說,就是在單片機復位的情況下也對系統沒什么影響的情況時,適合使用單片機看門狗。

5.什么情況使用看門狗要慎重

(1)重要的計時或計數情況。此時不太建議用看門狗,因為復位了,數據清零了,就沒用了;

(2)使用了較多全局狀態變量的時刻,如果復位會導致這些變量丟失會導致運行錯誤,則不建議隨意使用看門狗。比如是一個加工工藝,需要一步一步按照流程來操作,此時就不能使用看門狗,因為一旦復位會導致工藝步驟丟失,會產生錯誤。

(3)其他不能隨意復位的情況。

以上就是STC15單片機看門狗的使用要點,總之看門狗很有用,但是不能亂用,用好了可以增強系統的抗干擾能力,不至于導致系統失效,亂用的話,就嘿嘿了。

全部回復(0)
正序查看
倒序查看
現在還沒有回復呢,說說你的想法
主站蜘蛛池模板: 东京热无码av一区二区 | 福利视频三区 | 色视频网站在线观看 | 丰满妇女做a级毛片免费观看 | 99久RE热视频这里只有精品6 | 阿公抱着我边摸边吃奶视频 | 中文av字幕在线观看 | 最新看片国产精品免费在线 | 偷妻无码一区二区三区动漫 | 林雅诗三级无删减在线观看 | 国产播放啪视频免费视频 | 欧美日韩国产人妻无码 | 亚洲精品一区二区制服 | 日韩视频一区尤物少妇偷拍 | 日韩视频一区在线观看 | 伊人久久大香线蕉AV五月天宝贝 | 亚洲肉感在线 | 国产91xxx在线观看大全 | 边勾边做1V1H顾慕琛 | 凹凸18禁在线视频 | 丰满少妇xbxb毛片日本视频 | 年轻的朋友6韩剧免费 | 国产大片免费完整观看 | 亚洲国产日韩在线一区模特 | 日本一级片免费 | 熟女泄火一区二区三区在线 | 亚韩精品 | 飘雪影院免费版在线观看视频 | 中文无码精品a∨在线 | 好男人资源在线观看视频 | 色欲久久久天天天综合影院 | 97av视频在线 | 神马午夜窝窝 | 欧美肥臀大屁股MAGNET | AV人摸人人人澡人人超碰手机版 | 中文字幕久久久久一区 | 一级做a爰片性色毛片是免费 | 亚洲自偷自自 | 日韩亚州 | 亚洲第一成网站 | 亚洲爆乳中文字幕无码专区网站 |