在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談STM8S_008_WDG獨立看門狗和窗口看門狗

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-20 09:39 ? 次閱讀

Ⅰ寫在前面

STM8S看門狗WDG分為兩類:

IWDG:Independent WatchDog獨立看門狗

WWDG:Window WatchDog窗口看門狗

獨立看門狗模塊可以用于解決處理器因為硬件或軟件的故障所發生的錯誤。它由一個內部的128kHz的LSI阻容振蕩器作為時鐘源驅動,因此即使是主時鐘失效時它仍然照常工作。

窗口看門狗用于監測由于外部干擾或不可預知的邏輯條件所產生的軟件錯誤,這樣的軟件錯誤通常會導致應用程序不按照預期的方式運行。

大概意思主要是:IWDG主要防止硬件問題引起的復位,WWDG主要防止軟件問題引起的復位.

為方便大家閱讀,本文內容已經整理成PDF文件:

http://pan.baidu.com/s/1i5uWhJR

Ⅱ看門狗知識

1.看門狗結構圖

STM8S的獨立看門狗IWDG比窗口看門狗WWDG結構看起來要簡單一點,其實寄存器都只有那么兩個,軟件配置起來也比較簡單。不管是獨立還是窗口看門狗,自己看結構圖基本就能理解到它們。具體請看下面結構圖進行對比。

獨立看門狗IWDG結構圖:

當向下計數器“8-bit down-counter”等于0時,就會產生看門狗復位“WDG reset”。因此,就需要在計數器等于0之前通過重載寄存器“IWDG_RLR”更新計數器的值。

窗口看門狗WWDG結構圖:

窗口看門狗有兩地方會引起復位:

1.當7位(T[6:0])遞減計數器從0x40翻轉到0x3F(T6位清零)時。這種和上面IWDG類似,遞減到“0”就會復位。

2.當更新的計數值大于窗口值(T6:0 > W6:0)時。

這兩種復位的情況如下圖:

2.IWDG獨立看門狗功能

當在鍵寄存器(IWDG_KR)中寫入數值0xCC后,獨立看門狗就被啟動了,計數器開始從它的復位值0xFF開始遞減計數,當計數減到0x00時就會產生一個復位信號(WDG RESET)。

如果在IWDG_HW選擇字節中使能了硬件看門狗的功能,在芯片上電時看門狗的功能被自動開啟,如果軟件不能及時操作鍵寄存器,則在計數器達到0x00時產生復位。

看門狗復位的超時值是由你的配置(分頻值和計數值)決定的,大概如下(默認LSI = 128 kHz 會隨溫度變化有所偏差):

3.WWDG獨立看門狗功能

● 可編程的自由運行遞減計數器

● 有條件的復位

─ 如果開啟了看門狗,當遞減計數器的數值小于 0x40 時產生復位

─ 如果開啟了看門狗,當在指定的時間窗口之外重加載遞減計數器的數值時產生復位

● 硬件或軟件啟動看門狗(由選擇字節指定)

● 可在HALT指令時產生復位(由選擇字節配置)

● 開啟看門狗:

如果(通過選擇字節)選擇了軟件看門狗,在系統復位后看門狗處于關閉狀態。設置WDGCR寄存器中的WDGA位將開啟看門狗,隨后在下次復位之前將不能關閉看門狗。

如果(通過選擇字節)選擇了硬件看門狗,看門狗將始終開啟,而WDGA位將不起作用。

● 控制遞減計數器:

遞減計數器是自由運行計數器:即使未開啟看門狗,它依然不斷地遞減計數。當開啟看門狗時,必須設置T6位以避免立刻產生復位。

T[5:0]位中包含了看門狗產生復位前允許的時間延遲;因為寫入WDGCR寄存器時,預分頻器的狀態是不可知的,所以這個時間延遲介于一個最小和最大數值之間。

窗口寄存器(WDGWR)的數值是指定窗口的高限:為防止復位,必須在遞減計數器的數值小于窗口寄存器的數值并大于0x3F時刷新遞減計數器。

提示: T6位可以用于產生一個軟件復位(即設置WDGA位同時清除T6位

● 在停止時產生看門狗復位

如果開啟了看門狗,并且選擇了停止時產生看門狗復位的選項,則執行HALT指令將產生復位。

Ⅲ軟件工程源代碼

1、關于工程

本文提供兩個版本的工程代碼:

STM8S-A08_IWDG獨立看門狗

STM8S-A08_WWDG窗口看門狗

本文提供的工程代碼是基于前面軟件工程“STM8S-A04_UART基本收發數據”增加WDG看門狗修改而來。初學的朋友可以參看我前面對應的基礎文章,那些文章講的比較詳細。

2.IWDG獨立看門狗代碼分析

A.IWDG_Initializes初始化

voidIWDG_Initializes(void)

{

IWDG_Enable();

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

IWDG_SetPrescaler(IWDG_Prescaler_256);

IWDG_SetReload(250);

IWDG_ReloadCounter();

}

預分頻值為IWDG_Prescaler_256,參數為枚舉類型:

typedef enum

{

IWDG_Prescaler_4 = (uint8_t)0x00,

IWDG_Prescaler_8 = (uint8_t)0x01,

IWDG_Prescaler_16 = (uint8_t)0x02,

IWDG_Prescaler_32 = (uint8_t)0x03,

IWDG_Prescaler_64 = (uint8_t)0x04,

IWDG_Prescaler_128 = (uint8_t)0x05,

IWDG_Prescaler_256 = (uint8_t)0x06

} IWDG_Prescaler_TypeDef;

重裝計數值為8位寄存器,最大255,我們設置為250.

我在初始化看門狗時,將復位超時值設置為1000ms,具體計算為如下:

128K/2 = 64K (輸入時鐘)

64K / 256 = 250(分頻后時鐘)

250 / 250 = 1 (重載值為250)

B.功能測試代碼

voidmain(void)

{

System_Initializes();

UART1_Printf((uint8_t*)"Start...");

while(1)

{

LED_REVERSE;

TIMDelay_Nms(990);

IWDG_ReloadCounter();

}

}

第一:如果復位,會打印“Start...";

第二:我們配置復位超時值為1000ms,理論小于1000ms內喂狗都不會復位,由于LSI有偏差,我們設定在990ms喂狗一次。

第三:修改延時值為1010,則會發現系統復位(打印“Start...")。

3.WWDG窗口看門狗代碼分析

A.WWDG_Initializes初始化

#define WWDG_WINDOW_VALUE 0x7F //窗口值

#define WWDG_COUNTER_INIT 0x7F //計數值

voidWWDG_Initializes(void)

{

WWDG_Init(WWDG_COUNTER_INIT, WWDG_WINDOW_VALUE);

}

為了方便測試,我們這里將窗口值和計數值定義為宏,范圍:0x40 - 0x7F.

B.功能測試代碼

voidmain(void)

{

System_Initializes();

UART1_Printf((uint8_t*)"Start...");

WWDG_Initializes();

while(1)

{

LED_REVERSE;

TIMDelay_Nms(49);

WWDG_SetCounter(WWDG_COUNTER_INIT);

}

}

第一:同理,如果復位,會打印“Start...";

第二:我們配置復位超時值為49.152ms,如果這個延時大于49(設定為50及以上),就會復位(打印“Start...")。

第三:如果我們修改延時值(假如為TIMDelay_Nms(10);),修改窗口值為#define WWDG_WINDOW_VALUE 0x4F。則不在喂狗窗口范圍內,會發現系統復位(打印“Start...")。

提醒大家:多測試驗證才能更容易理解和記住功能的要點。

Ⅳ下載

STM8S資料:

http://pan.baidu.com/s/1o7Tb9Yq

軟件源代碼工程兩版本(STM8S-A08_xWDGxx看門狗):

http://pan.baidu.com/s/1c2EcRo0

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 看門狗
    +關注

    關注

    10

    文章

    576

    瀏覽量

    71426
  • STM8S
    +關注

    關注

    16

    文章

    149

    瀏覽量

    31885
  • IWDG
    +關注

    關注

    0

    文章

    21

    瀏覽量

    5408
收藏 人收藏

    評論

    相關推薦

    TPS3430 具有可編程復位延遲的窗口看門狗定時器數據手冊

    TPS3430 是一款獨立窗口看門狗定時器,具有可編程看門狗窗口和可編程看門狗復位延遲,適用于
    的頭像 發表于 04-10 14:23 ?113次閱讀
    TPS3430 具有可編程復位延遲的<b class='flag-5'>窗口</b><b class='flag-5'>看門狗</b>定時器數據手冊

    TPS3430-Q1 具有可編程復位延遲的汽車級窗口看門狗定時器數據手冊

    TPS3430-Q1 是一款獨立的汽車窗口看門狗定時器,具有可編程看門狗窗口和可編程看門狗復位延
    的頭像 發表于 04-10 14:15 ?169次閱讀
    TPS3430-Q1 具有可編程復位延遲的汽車級<b class='flag-5'>窗口</b><b class='flag-5'>看門狗</b>定時器數據手冊

    TPS3435 納米靜態電流精密超時看門狗定時器數據手冊

    TPS3435 是一款超低功耗 (典型值為 250nA) 器件,提供可編程超時看門狗定時器。 TPS3435 提供高精度超時看門狗定時器,具有適用于各種應用的一系列功能。超時看門狗定時器可由
    的頭像 發表于 04-09 15:49 ?173次閱讀
    TPS3435 納米靜態電流精密超時<b class='flag-5'>看門狗</b>定時器數據手冊

    TPS3436-Q1 汽車級納米靜態電流精密窗口看門狗定時器數據手冊

    TPS3436-Q1 是一款超低功耗(典型值為 250 nA)器件,提供可編程窗口看門狗定時器。 TPS3436-Q1 提供高精度窗口看門狗定時器,具有許多功能,適用于各種應用。
    的頭像 發表于 04-09 14:40 ?158次閱讀
    TPS3436-Q1 汽車級納米靜態電流精密<b class='flag-5'>窗口</b><b class='flag-5'>看門狗</b>定時器數據手冊

    看門狗,你真的會用嗎?

    嵌入式系統開發中,看門狗是一種重要的機制,用于在程序異常時自動重啟系統,保障其穩定性。本文將深入探討看門狗及其在程序穩定性中的作用,幫助您更好地理解和應用看門狗技術。看門狗首先需要明確
    的頭像 發表于 03-12 11:37 ?659次閱讀
    <b class='flag-5'>看門狗</b>,你真的會用嗎?

    安利給工程師!看門狗相關知識

    看門狗能夠及時檢測并采取相應措施,從而避免系統長時間處于故障狀態。本文將詳細介紹看門狗的工作原理及其正確使用方法。 同時通過具體示例解析,教你如何在一個簡單的LuatOS項目中集成看門狗定時器,設置
    的頭像 發表于 12-31 14:29 ?404次閱讀
    安利給工程師!<b class='flag-5'>看門狗</b>相關知識

    抄作業!看門狗定時器必備知識

    Air201在模組內部集成了硬件看門狗,今天就一起來聊聊~ 本文將帶你了解看門狗的工作原理、應用架構、定時時間設置、軟硬件看門狗的區別,以及看門狗定時器的典型應用場景及關鍵設計因素等內
    的頭像 發表于 12-30 14:44 ?551次閱讀
    抄作業!<b class='flag-5'>看門狗</b>定時器必備知識

    一文詳解看門狗/電壓監控芯片規格書

    一、關于一些看門狗、電壓監控的疑問?1.什么是看門狗看門狗,又叫Watchdog,本質上來說就是一個定時器電路,一般有一個輸入和一個輸出,其中輸入叫做喂狗,輸出一般連接到另外一個部分的復位端,一般
    的頭像 發表于 12-26 17:18 ?988次閱讀
    一文詳解<b class='flag-5'>看門狗</b>/電壓監控芯片規格書

    常用硬件看門狗電路

    硬件看門狗電路分享
    的頭像 發表于 12-18 14:09 ?3663次閱讀
    常用硬件<b class='flag-5'>看門狗</b>電路

    請問如何關閉獨立看門狗

    ic是cs32l015. 使用HAL_FWDT_STOP(&h_FWDT);加__HAL_RCC_FWDT_CLK_DISABLE();無法使看門狗停止工作,會一直在深度休眠時喚醒IC。請問怎么關閉看門狗
    發表于 11-26 18:03

    看門狗定時器的工作原理

    看門狗定時器是一種獨立的計時器硬件模塊,其核心功能是倒計時。如果系統軟件在計時器超時前沒有對其進行復位操作(即“喂狗”),看門狗將觸發一個預定義的動作,通常是系統復位或中斷。
    的頭像 發表于 10-21 14:18 ?956次閱讀
    <b class='flag-5'>看門狗</b>定時器的工作原理

    Sitara AM6442 RTI看門狗調試

    電子發燒友網站提供《Sitara AM6442 RTI看門狗調試.pdf》資料免費下載
    發表于 08-27 11:26 ?0次下載
    Sitara AM6442 RTI<b class='flag-5'>看門狗</b>調試

    【GD32F470紫藤派開發板使用手冊】第七講 FWDG-看門狗實驗

    通過本實驗主要學習以下內容: 獨立看門狗的原理 獨立看門狗功能介紹 實現獨立看門狗功能
    的頭像 發表于 05-11 10:13 ?1560次閱讀
    【GD32F470紫藤派開發板使用手冊】第七講 FWDG-<b class='flag-5'>看門狗</b>實驗

    【GD32H757Z海棠派開發板使用手冊】第七講 FWDG-看門狗實驗

    通過本實驗主要學習以下內容: 獨立看門狗的原理 獨立看門狗功能介紹 實現獨立看門狗功能
    的頭像 發表于 05-10 09:37 ?1185次閱讀
    【GD32H757Z海棠派開發板使用手冊】第七講 FWDG-<b class='flag-5'>看門狗</b>實驗
    主站蜘蛛池模板: 日韩精品免费一级视频 | 性欧美大战久久久久久久 | 国产在线视频不卡 | 91大神精品长腿在线观看网站 | 色偷偷成人 | 国产经典三级在线 | 一级毛片一级毛片一级毛片 | 怡红院色视频在线 | 男人的天堂视频在线 | 午夜影音| 久久综合九九亚洲一区 | 五月欧美激激激综合网色播 | 亚洲日韩色综合视频 | 亚洲精品美女视频 | www.黄色一片 | 午夜黄色在线观看 | 黄色一级a毛片 | 精品免费 | 亚洲入口无毒网址你懂的 | 色图插插插 | 免费我看视频在线观看 | 亚洲国产色婷婷精品综合在线观看 | 奇米影视7777久久精品 | ww欧洲ww在线视频看 | 黄色片日本网站 | 久久久久88色偷偷免费 | 天天干天天插天天 | 失禁h啪肉尿出来高h | 亚洲www在线 | 综合免费视频 | 国产成年美女毛片80s | 亚洲人成人 | 日本卡一卡2卡3卡4精品卡无人区 | 黄色福利网| 国产综合视频在线观看 | 国产精品久久久久久久久kt | 爱婷婷视频在线观看 | 亚洲欧美在线精品一区二区 | 欧美日韩精品一区二区另类 | 国产成人影院在线观看 | 久久精品屋 |