一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺談STM8S_008_WDG獨(dú)立看門狗和窗口看門狗

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-20 09:39 ? 次閱讀

Ⅰ寫在前面

STM8S看門狗WDG分為兩類:

IWDG:Independent WatchDog獨(dú)立看門狗

WWDG:Window WatchDog窗口看門狗

獨(dú)立看門狗模塊可以用于解決處理器因?yàn)橛布蜍浖墓收纤l(fā)生的錯(cuò)誤。它由一個(gè)內(nèi)部的128kHz的LSI阻容振蕩器作為時(shí)鐘源驅(qū)動(dòng),因此即使是主時(shí)鐘失效時(shí)它仍然照常工作。

窗口看門狗用于監(jiān)測(cè)由于外部干擾或不可預(yù)知的邏輯條件所產(chǎn)生的軟件錯(cuò)誤,這樣的軟件錯(cuò)誤通常會(huì)導(dǎo)致應(yīng)用程序不按照預(yù)期的方式運(yùn)行。

大概意思主要是:IWDG主要防止硬件問(wèn)題引起的復(fù)位,WWDG主要防止軟件問(wèn)題引起的復(fù)位.

為方便大家閱讀,本文內(nèi)容已經(jīng)整理成PDF文件:

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

Ⅱ看門狗知識(shí)

1.看門狗結(jié)構(gòu)圖

STM8S的獨(dú)立看門狗IWDG比窗口看門狗WWDG結(jié)構(gòu)看起來(lái)要簡(jiǎn)單一點(diǎn),其實(shí)寄存器都只有那么兩個(gè),軟件配置起來(lái)也比較簡(jiǎn)單。不管是獨(dú)立還是窗口看門狗,自己看結(jié)構(gòu)圖基本就能理解到它們。具體請(qǐng)看下面結(jié)構(gòu)圖進(jìn)行對(duì)比。

獨(dú)立看門狗IWDG結(jié)構(gòu)圖:

當(dāng)向下計(jì)數(shù)器“8-bit down-counter”等于0時(shí),就會(huì)產(chǎn)生看門狗復(fù)位“WDG reset”。因此,就需要在計(jì)數(shù)器等于0之前通過(guò)重載寄存器“IWDG_RLR”更新計(jì)數(shù)器的值。

窗口看門狗WWDG結(jié)構(gòu)圖:

窗口看門狗有兩地方會(huì)引起復(fù)位:

1.當(dāng)7位(T[6:0])遞減計(jì)數(shù)器從0x40翻轉(zhuǎn)到0x3F(T6位清零)時(shí)。這種和上面IWDG類似,遞減到“0”就會(huì)復(fù)位。

2.當(dāng)更新的計(jì)數(shù)值大于窗口值(T6:0 > W6:0)時(shí)。

這兩種復(fù)位的情況如下圖:

2.IWDG獨(dú)立看門狗功能

當(dāng)在鍵寄存器(IWDG_KR)中寫入數(shù)值0xCC后,獨(dú)立看門狗就被啟動(dòng)了,計(jì)數(shù)器開(kāi)始從它的復(fù)位值0xFF開(kāi)始遞減計(jì)數(shù),當(dāng)計(jì)數(shù)減到0x00時(shí)就會(huì)產(chǎn)生一個(gè)復(fù)位信號(hào)(WDG RESET)。

如果在IWDG_HW選擇字節(jié)中使能了硬件看門狗的功能,在芯片上電時(shí)看門狗的功能被自動(dòng)開(kāi)啟,如果軟件不能及時(shí)操作鍵寄存器,則在計(jì)數(shù)器達(dá)到0x00時(shí)產(chǎn)生復(fù)位。

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

3.WWDG獨(dú)立看門狗功能

● 可編程的自由運(yùn)行遞減計(jì)數(shù)器

● 有條件的復(fù)位

─ 如果開(kāi)啟了看門狗,當(dāng)遞減計(jì)數(shù)器的數(shù)值小于 0x40 時(shí)產(chǎn)生復(fù)位

─ 如果開(kāi)啟了看門狗,當(dāng)在指定的時(shí)間窗口之外重加載遞減計(jì)數(shù)器的數(shù)值時(shí)產(chǎn)生復(fù)位

● 硬件或軟件啟動(dòng)看門狗(由選擇字節(jié)指定)

● 可在HALT指令時(shí)產(chǎn)生復(fù)位(由選擇字節(jié)配置)

● 開(kāi)啟看門狗:

如果(通過(guò)選擇字節(jié))選擇了軟件看門狗,在系統(tǒng)復(fù)位后看門狗處于關(guān)閉狀態(tài)。設(shè)置WDGCR寄存器中的WDGA位將開(kāi)啟看門狗,隨后在下次復(fù)位之前將不能關(guān)閉看門狗。

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

● 控制遞減計(jì)數(shù)器:

遞減計(jì)數(shù)器是自由運(yùn)行計(jì)數(shù)器:即使未開(kāi)啟看門狗,它依然不斷地遞減計(jì)數(shù)。當(dāng)開(kāi)啟看門狗時(shí),必須設(shè)置T6位以避免立刻產(chǎn)生復(fù)位。

T[5:0]位中包含了看門狗產(chǎn)生復(fù)位前允許的時(shí)間延遲;因?yàn)閷懭隬DGCR寄存器時(shí),預(yù)分頻器的狀態(tài)是不可知的,所以這個(gè)時(shí)間延遲介于一個(gè)最小和最大數(shù)值之間。

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

提示: T6位可以用于產(chǎn)生一個(gè)軟件復(fù)位(即設(shè)置WDGA位同時(shí)清除T6位

● 在停止時(shí)產(chǎn)生看門狗復(fù)位

如果開(kāi)啟了看門狗,并且選擇了停止時(shí)產(chǎn)生看門狗復(fù)位的選項(xiàng),則執(zhí)行HALT指令將產(chǎn)生復(fù)位。

Ⅲ軟件工程源代碼

1、關(guān)于工程

本文提供兩個(gè)版本的工程代碼:

STM8S-A08_IWDG獨(dú)立看門狗

STM8S-A08_WWDG窗口看門狗

本文提供的工程代碼是基于前面軟件工程“STM8S-A04_UART基本收發(fā)數(shù)據(jù)”增加WDG看門狗修改而來(lái)。初學(xué)的朋友可以參看我前面對(duì)應(yīng)的基礎(chǔ)文章,那些文章講的比較詳細(xì)。

2.IWDG獨(dú)立看門狗代碼分析

A.IWDG_Initializes初始化

voidIWDG_Initializes(void)

{

IWDG_Enable();

IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

IWDG_SetPrescaler(IWDG_Prescaler_256);

IWDG_SetReload(250);

IWDG_ReloadCounter();

}

預(yù)分頻值為IWDG_Prescaler_256,參數(shù)為枚舉類型:

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;

重裝計(jì)數(shù)值為8位寄存器,最大255,我們?cè)O(shè)置為250.

我在初始化看門狗時(shí),將復(fù)位超時(shí)值設(shè)置為1000ms,具體計(jì)算為如下:

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

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

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

B.功能測(cè)試代碼

voidmain(void)

{

System_Initializes();

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

while(1)

{

LED_REVERSE;

TIMDelay_Nms(990);

IWDG_ReloadCounter();

}

}

第一:如果復(fù)位,會(huì)打印“Start...";

第二:我們配置復(fù)位超時(shí)值為1000ms,理論小于1000ms內(nèi)喂狗都不會(huì)復(fù)位,由于LSI有偏差,我們?cè)O(shè)定在990ms喂狗一次。

第三:修改延時(shí)值為1010,則會(huì)發(fā)現(xiàn)系統(tǒng)復(fù)位(打印“Start...")。

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

A.WWDG_Initializes初始化

#define WWDG_WINDOW_VALUE 0x7F //窗口值

#define WWDG_COUNTER_INIT 0x7F //計(jì)數(shù)值

voidWWDG_Initializes(void)

{

WWDG_Init(WWDG_COUNTER_INIT, WWDG_WINDOW_VALUE);

}

為了方便測(cè)試,我們這里將窗口值和計(jì)數(shù)值定義為宏,范圍:0x40 - 0x7F.

B.功能測(cè)試代碼

voidmain(void)

{

System_Initializes();

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

WWDG_Initializes();

while(1)

{

LED_REVERSE;

TIMDelay_Nms(49);

WWDG_SetCounter(WWDG_COUNTER_INIT);

}

}

第一:同理,如果復(fù)位,會(huì)打印“Start...";

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

第三:如果我們修改延時(shí)值(假如為TIMDelay_Nms(10);),修改窗口值為#define WWDG_WINDOW_VALUE 0x4F。則不在喂狗窗口范圍內(nèi),會(huì)發(fā)現(xiàn)系統(tǒng)復(fù)位(打印“Start...")。

提醒大家:多測(cè)試驗(yàn)證才能更容易理解和記住功能的要點(diǎn)。

Ⅳ下載

STM8S資料:

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 看門狗
    +關(guān)注

    關(guān)注

    10

    文章

    576

    瀏覽量

    71460
  • STM8S
    +關(guān)注

    關(guān)注

    16

    文章

    149

    瀏覽量

    31907
  • IWDG
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    5413
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TPS3430 具有可編程復(fù)位延遲的窗口看門狗定時(shí)器數(shù)據(jù)手冊(cè)

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

    TPS3430-Q1 具有可編程復(fù)位延遲的汽車級(jí)窗口看門狗定時(shí)器數(shù)據(jù)手冊(cè)

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

    TPS3435 納米靜態(tài)電流精密超時(shí)看門狗定時(shí)器數(shù)據(jù)手冊(cè)

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

    TPS3436-Q1 汽車級(jí)納米靜態(tài)電流精密窗口看門狗定時(shí)器數(shù)據(jù)手冊(cè)

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

    看門狗,你真的會(huì)用嗎?

    嵌入式系統(tǒng)開(kāi)發(fā)中,看門狗是一種重要的機(jī)制,用于在程序異常時(shí)自動(dòng)重啟系統(tǒng),保障其穩(wěn)定性。本文將深入探討看門狗及其在程序穩(wěn)定性中的作用,幫助您更好地理解和應(yīng)用看門狗技術(shù)。看門狗首先需要明確
    的頭像 發(fā)表于 03-12 11:37 ?809次閱讀
    <b class='flag-5'>看門狗</b>,你真的會(huì)用嗎?

    安利給工程師!看門狗相關(guān)知識(shí)

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

    抄作業(yè)!看門狗定時(shí)器必備知識(shí)

    Air201在模組內(nèi)部集成了硬件看門狗,今天就一起來(lái)聊聊~ 本文將帶你了解看門狗的工作原理、應(yīng)用架構(gòu)、定時(shí)時(shí)間設(shè)置、軟硬件看門狗的區(qū)別,以及看門狗定時(shí)器的典型應(yīng)用場(chǎng)景及關(guān)鍵設(shè)計(jì)因素等內(nèi)
    的頭像 發(fā)表于 12-30 14:44 ?569次閱讀
    抄作業(yè)!<b class='flag-5'>看門狗</b>定時(shí)器必備知識(shí)

    一文詳解看門狗/電壓監(jiān)控芯片規(guī)格書(shū)

    一、關(guān)于一些看門狗、電壓監(jiān)控的疑問(wèn)?1.什么是看門狗?看門狗,又叫Watchdog,本質(zhì)上來(lái)說(shuō)就是一個(gè)定時(shí)器電路,一般有一個(gè)輸入和一個(gè)輸出,其中輸入叫做喂狗,輸出一般連接到另外一個(gè)部分的復(fù)位端,一般
    的頭像 發(fā)表于 12-26 17:18 ?1022次閱讀
    一文詳解<b class='flag-5'>看門狗</b>/電壓監(jiān)控芯片規(guī)格書(shū)

    常用硬件看門狗電路

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

    請(qǐng)問(wèn)如何關(guān)閉獨(dú)立看門狗

    ic是cs32l015. 使用HAL_FWDT_STOP(&h_FWDT);加__HAL_RCC_FWDT_CLK_DISABLE();無(wú)法使看門狗停止工作,會(huì)一直在深度休眠時(shí)喚醒IC。請(qǐng)問(wèn)怎么關(guān)閉看門狗?
    發(fā)表于 11-26 18:03

    看門狗定時(shí)器的工作原理

    看門狗定時(shí)器是一種獨(dú)立的計(jì)時(shí)器硬件模塊,其核心功能是倒計(jì)時(shí)。如果系統(tǒng)軟件在計(jì)時(shí)器超時(shí)前沒(méi)有對(duì)其進(jìn)行復(fù)位操作(即“喂狗”),看門狗將觸發(fā)一個(gè)預(yù)定義的動(dòng)作,通常是系統(tǒng)復(fù)位或中斷。
    的頭像 發(fā)表于 10-21 14:18 ?996次閱讀
    <b class='flag-5'>看門狗</b>定時(shí)器的工作原理

    Sitara AM6442 RTI看門狗調(diào)試

    電子發(fā)燒友網(wǎng)站提供《Sitara AM6442 RTI看門狗調(diào)試.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 11:26 ?0次下載
    Sitara AM6442 RTI<b class='flag-5'>看門狗</b>調(diào)試

    【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第七講 FWDG-看門狗實(shí)驗(yàn)

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: 獨(dú)立看門狗的原理 獨(dú)立看門狗功能介紹 實(shí)現(xiàn)獨(dú)立看門狗功能
    的頭像 發(fā)表于 05-11 10:13 ?1585次閱讀
    【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第七講 FWDG-<b class='flag-5'>看門狗</b>實(shí)驗(yàn)

    【GD32H757Z海棠派開(kāi)發(fā)板使用手冊(cè)】第七講 FWDG-看門狗實(shí)驗(yàn)

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: 獨(dú)立看門狗的原理 獨(dú)立看門狗功能介紹 實(shí)現(xiàn)獨(dú)立看門狗功能
    的頭像 發(fā)表于 05-10 09:37 ?1226次閱讀
    【GD32H757Z海棠派開(kāi)發(fā)板使用手冊(cè)】第七講 FWDG-<b class='flag-5'>看門狗</b>實(shí)驗(yàn)