stm8的獨立看門狗與視窗看門狗

2022-07-05 15:42:14 字數 1311 閱讀 2326

stm8擁有兩個硬體看門狗,分別叫做獨立看門狗和視窗看門狗

獨立看門狗的框圖如下

我們可以看到,獨立看門狗的時鐘來自於lsi內部低速振盪器,經過二分頻到達看門狗外設單元,在經過乙個七位的預分頻到達計數器,這個七位的分頻由pr控制,看門狗內部使用乙個八位的向下計數計數器來計數,計數到0的時候發出看門狗復位訊號,同時有乙個rlr可以存放看門狗的初始化值,但對kr操作的時候看門狗計數器過載rlr的資料,達到餵狗目的

所以,對看門狗的處理應該分為以下步驟

1.      關閉看門狗

2.      啟動lsi系統低速時鐘

3.      設定時鐘的分頻係數

4.      設定看門狗過載的值

5.      在沒有復位之前餵狗,重新計數

相關暫存器如下

使用方法見以下**

#ifndef __iwdg_h_

#define __iwdg_h_

#include "stm8s.h"

void iwdginit(void);//預設計數時間一s

void iwdgfeed(void);

#endif

#include "iwdg.h"

void iwdginit(void) //預設計數時間一分鐘

void iwdgfeed(void)

視窗看門狗這是另一種模式,晶元定義了乙個下線,低於0x40的時候產生復位,同時定義了乙個上限,高於上限的時候餵狗同樣產生復位

視窗看門狗的時鐘來自於cpu時鐘,分頻數為12288,使用看門狗過程如下

1設定視窗值

2設定當前計數值

3啟動看門狗

視窗看門狗一旦啟動無法關閉,除非發生復位系統自動關閉,具體使用檢視**

#ifndef __wwdg_h_

#define __wwdg_h_

#include "stm8s.h"

void wwdginit(void);

void wwdgfeed(void);

#endif

#include "wwdg.h"

void wwdginit(void)

else

}void wwdgfeed(void)

獨立看門狗

用我自己的話來解釋一下看門狗 看門狗就是一段程式正常執行時,阻止程式復位的 另一方面也就是說,程式非正常執行時,不能執行,程式就會產生復位,從而跳出非正常程式執行狀態。在由微控制器構成的微型計算機系統中,由於微控制器的工作常常會受到來自外界電磁場的干擾,造成程式的跑飛,而陷入死迴圈,程式的正常執行被...

獨立看門狗實驗

這個實驗,如果沒有餵狗時,系統就會產生復位,導致系統斷電一下,所有led燈會滅一下 這裡用到了外部中斷 也可以不用 外部中斷可以自己加 include stm32f4xx.h void led init void void key init void void delay void void iwd...

IWDG 獨立看門狗

本章參考資料 stm32f4xx 中文參考手冊 iwdg 章節。學習本章時,配合 stm32f4xx 中文參考手冊 iwdg 章節一起閱讀,效果會更佳,特別是涉及到暫存器說明的部分。iwdg 簡介stm32 有兩個看門狗,乙個是獨立看門狗另外乙個是視窗看門狗,獨立看門狗號稱寵 物狗,視窗看門狗號稱警...