娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月15日(星期三)

正在發生

2020年01月15日 | STM32看門狗研究

發布者:科技舞者 來源: eefocus關鍵字:STM32  看門狗 手機看文章 掃描二維碼
隨時隨地手機看文章

單片機系統在外界的干擾下會出現程序跑飛的現象導致出現死循環,看門狗電路就是為了避免這種情況的發生。看門狗的作用就是在一定時間內(通過定時計數器實現)沒有接收喂狗信號(表示 MCU 已經掛了),便實現處理器的自動復位重啟(發送復位信號)。


STM32的看門狗

STM32芯片一共有兩個看門狗,一個是獨立看門狗(IWDG),另一個是窗體看門狗(WWDG)


  • 先來講講獨立看門狗: 
    STM32 的獨立看門狗由內部專門的 40Khz 低速時鐘驅動,即使主時鐘發生故障,它也仍然有效。這里需要注意獨立看門狗的時鐘是一個內部 RC 時鐘,所以并不是準確的 40Khz,而是在 30~60Khz 之間的一個可變化的時鐘,只是我們在估算的時候,以 40Khz 的頻率來計算,看門狗對時間的要求不是很精確,所以,時鐘有些偏差,都是可以接受的。


  • 獨立看門狗有自由運行的遞減計數器

  • 獨立看門狗的時鐘由獨立的RC振蕩器提供(可在停止和待機模式下工作)

  • 獨立看門狗被激活后,則在計數器計數至0x000時產生復位


獨立看門狗的配置工作代碼:


 1 void IWDG_Init(u8 prer,u16 rlr)

 2 {

 3    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //①使能對寄存器 I 寫操作

 4    IWDG_SetPrescaler(prer); //②設置 IWDG 預分頻值:設置 IWDG 預分頻值

 5    IWDG_SetReload(rlr); //②設置 IWDG 重裝載值,注意不能大于0xfff

 6    IWDG_ReloadCounter(); //③按照 IWDG 重裝載寄存器的值重裝載 IWDG 計數器

 7    IWDG_Enable(); //④使能 IWDG

 8 }

 9 //喂獨立看門狗

10 void IWDG_Feed(void)

11 {

12    IWDG_ReloadCounter();//reload

13 }


主邏輯區代碼:


 1 delay_init();//延時函數初始化

 2 NVIC_Configuration(); //設置 NVIC 中斷分組 2:2 位搶占優先級,2 位響應優先級

 3 KEY_Init(); //按鍵初始化

 4 IWDG_Init(4,625); //與分頻數為 64,重載值為 625,溢出時間為 1s

 5 while(1)

 6 {

 7     if(KEY_Scan(0)==KEY_UP)

 8     {

 9         IWDG_Feed(); //如果 按鍵按下,則喂狗

10     }

11     delay_ms(10);

12 }


  • 再來看看窗體看門狗 
    窗口看門狗(WWDG)通常被用來監測由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產生的軟件故障。除非遞減計數器的值在 T6 位(WWDG->CR 的第六位)變成 0 前被刷新,看門狗電路在達到預置的時間周期時,會產生一個 MCU 復位。在遞減計數器達到窗口配置寄存器(WWDG->CFR)數值之前,如果 7 位的遞減計數器數值(在控制寄存器中)被刷新, 那么也將產生一個 MCU 復位。這表明遞減計數器需要在一個有限的時間窗口中被刷新。


  • 條件復位 


  • ─當遞減計數器的值小于0x40,(若看門狗被啟動)則產生復位。 
    ─當遞減計數器在窗口外被重新裝載,(若看門狗被啟動)則產生復位。


如果啟動了看門狗并且允許中斷,當遞減計數器等于0x40時產生早期喚醒中斷(EWI),它可以被用于重裝載計數器以避免WWDG復位


看門狗時間計算公式:


窗口看門狗的超時公式如下:


Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;


其中:


Twwdg:WWDG 超時時間(單位為 ms)


Fpclk1:APB1 的時鐘頻率(單位為 Khz)


WDGTB:WWDG 的預分頻系數


T[5:0]:窗口看門狗的計數器低 6 位


窗口看門狗的配置工作代碼:


 1 void WWDG_Init(u8 tr,u8 wr,u32 fprer)

 2 {

 3     RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); // WWDG 時鐘使能

 4     WWDG_CNT=tr&WWDG_CNT; //初始化 WWDG_CNT.

 5     WWDG_SetPrescaler(fprer); //設置 IWDG 預分頻值

 6     WWDG_SetWindowValue(wr); //設置窗口值

 7     WWDG_Enable(WWDG_CNT);

 8     //使能看門狗,設置 counter

 9     WWDG_ClearFlag(); //清除提前喚醒中斷標志位

10     WWDG_NVIC_Init(); //初始化窗口看門狗 NVIC

11     WWDG_EnableIT(); //開啟窗口看門狗中斷

12 }

13 //重設置 WWDG 計數器的值

14 void WWDG_Set_Counter(u8 cnt)

15 {

16     WWDG_Enable(cnt); //使能看門狗,設置 counter .

17 }

18 //窗口看門狗中斷服務程序

19 void WWDG_NVIC_Init()

20 {

21     NVIC_InitTypeDef NVIC_InitStructure;

22     NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; //WWDG 中斷

23     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //搶占 2 子優先級 3 組 2

24     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //搶占 2,子優先級 3,組 2

25     NVIC_Init(&NVIC_InitStructure); //NVIC 初始化

26 }

27 void WWDG_IRQHandler(void)

28 {

29     WWDG_SetCounter(WWDG_CNT);

30     //當禁掉此句后,窗口看門狗將產生復位

31     WWDG_ClearFlag();

32     //清除提前喚醒中斷標志位

33     LED1=!LED1;

34     //LED 狀態翻轉

35 }


主邏輯區代碼:


 1 int main(void)

 2 {

 3     delay_init();//延時函數初始化

 4     NVIC_Configuration(); //設置 NVIC 中斷分組 2

 5     usart1_init();串口1初始化

 6     LED_Init(); //LED 初始化

 7     KEY_Init(); //按鍵初始化

 8     LED0=0;

 9     delay_ms(500);

10     WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8);//計數器值為 7f,窗口寄存器為 5f,//分頻數為 8

11     while(1)

12     {

13         LED0=1;

14     }

15 }


使用區別

再來分析一下獨立看門狗(IWDG)和窗體看門狗(WWDG)的區別:

(1)獨立看門狗沒有中斷,窗口看門狗有中斷

(2)獨立看門狗有硬件軟件之分,窗口看門狗只能軟件控制

(3)獨立看門狗只有下限,窗口看門狗又下限和上限

(4)獨立看門狗是12位遞減的。窗口看門狗是7位遞減的

(5)獨立看門狗是用的內部的大約40KHZ RC振蕩器,窗口看門狗是用的系統時鐘APB1ENR


功能不重復說明

功能不重復,獨立看門狗用于防止系統死機,而窗口看門狗用于保證系統運行的正確性. 
比如一個系統有一個工作線程和一個IDLE線程,系統正常運行時,工作線程運行200ms,暫停100ms.必須嚴格保證此運行時序. 


此時就可以在工作線程中啟動一個窗口看門狗,在IDLE線程中清狗. 


如果不足200ms就進到了IDLE線程,說明工作線程未能達到工作時間,出現了故障,窗口看門狗復位就被被觸發. 


如果超過300ms還未進入IDLE線程,說明工作線程未能及時完成,也會觸發窗口看門狗.


獨立看門狗應用就很簡單了,系統必須在計數器歸零前喂狗,否則看門狗觸發,系統復位.


總之就是,窗口看門狗用于保證已知時序的系統正常運行,獨立看門狗保證系統不死機,兩個看門狗各有其應用場景,所以不重復.

關鍵字:STM32  看門狗 引用地址:STM32看門狗研究

上一篇:STM32F407IG臨時堆棧劃分
下一篇:STM32 keil4 extern問題

推薦閱讀

集微網消息,(文/羅明)在前幾年中華酷聯的時代,聯想的手機一度進入國內市場份額前十,PC方面也在收購IBM的PC業務之后,成功占領高端市場,加上中低端發力,一舉成為PC霸主,手機與PC可謂是雙豐收,然而到了現在,聯想的手機業務在國內基本已經沉寂,那么PC業務又是什么情況呢?圖片來源:聯想劉軍微博我們看了兩大市場調研機構的數據后,大吃一驚,聯想...
我們已經看到 iPhone 在中國和日本有了相當大幅度的降價,至少有一位分析師認為未來 iPhone 還會進一步降價。去年 11 月的一份報告稱,蘋果計劃在日本下調 iPhone XR 的價格,該報告很快得到證實,蘋果在當月晚些時候為 iPhone XR 提供了大約 100 美元的折扣。而在上周,多款 iPhone 在國內電商平臺上也獲得了降價,iPhone 8、iPhone 8 P...
2019年,在智能化轉型趨勢的推動下,工業機器人市場規模繼續保持高速增長趨勢,中國也連續第7年成為全球最大工業機器人市場。另一方面,全球服務機器人與特種機器人市場也加快興起。同時,中國各地方省市也陸續推出更多政策,加大國產機器人扶持力度。整體來看,盡管中美貿易摩擦影響依舊,但多項數據表明,中國、乃至全球機器人市場均在逐漸回暖。 為...
本文基于公開資料撰寫,僅作為信息交流之用,不構成任何投資建議。2020年尾聲,一眾AI獨角獸集體沖擊IPO,包括依圖科技、云從科技、云知聲、云天勵飛。曠視科技也剛和中信簽了上市輔導協議,算起來,“AI四小龍”就商湯科技還未明顯表露“出關”打算。2021年,是AI行業“水大、魚多、浪急”的一年:水大,ROI(投資回報率)促使AI普及。魚多,新生代和老司機共舞。浪急...

史海拾趣

問答坊 | AI 解惑

關于射頻模塊的屏蔽

我做了一個模塊,CC1000加了一個PA(MAX2232),功率大概100mW左右,不知道要不要加屏蔽?請大俠指教哈 …

查看全部問答∨

[資料] HSPICE最新中文使用手冊

HSPICE最新中文教程,希望對大家有幫助!…

查看全部問答∨

定時器0的中斷和串口中斷不能同時工作么?

include #include #define _MHZ_ 11    sbit LED1=P0^0; sbit LED2=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit K1=P0^4; sbit K2=P0^5; sbit P0_6=P0^6; sbit P0_7=P0^7; sbit LED3=P1^0; sbit LED4=P1^1; sbi ...…

查看全部問答∨

evc 2003 下,如何將基于對話框的mfc程序最小化

evc 2003下運行基于對話框的mfc程序后,無法最小化,無法查看今日界面。下載了sdk中的例子也是一樣的。如果采用隱藏對話框窗口的話,則能夠查看今日界面,但任務列表中,找不到應用程序,請問如何只是將對話框最小化,同時能夠在任務列表中回復原界 ...…

查看全部問答∨

誰有umc6538的資料?

誰有umc6538的資料? 可用組態王破解版交換.(網絡版支持1000個用戶) …

查看全部問答∨

LPC114申請

很好奇!:Q :Q…

查看全部問答∨

嵌入式軟件工程師的技能與中國武術的對比

1、點穴:深入了解至少一種處理器/控制器的體系結構,熟悉其匯編指令。 2、掌法:精通C語言,掌握加載技術和編譯鏈接知識。 3、兵刃:了解常用存儲、通信和人機接口設備,熟練編寫設備驅動程序。 4、陣法:嵌入式操作系統的理論和實踐。 5、兵 ...…

查看全部問答∨

發本開關電源設計方面的書

這本書在原理性、實踐性方面都不錯,學習開關電源設計的網友不妨看書學習,包括做逆變器也一樣有參考價值,掌握理論自會知道如何實施。     …

查看全部問答∨

請問一下 特性阻抗與輸入輸出阻抗的區別

本帖最后由 dontium 于 2015-1-23 13:24 編輯 高頻電路中對衰減器的特性阻抗有要求,請問是這個衰減器的特性阻抗是分別看輸入阻抗和輸出阻抗 還是什么啊~~~ …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 米林县| 宁国市| 新平| 阜平县| 晋城| 滨州市| 太和县| 松江区| 东乌珠穆沁旗| 梁山县| 宁武县| 九台市| 东乡县| 墨竹工卡县| 宜川县| 灌云县| 达拉特旗| 天门市| 曲水县| 西峡县| 祁连县| 离岛区| 纳雍县| 济源市| 济宁市| 乐都县| 宣城市| 射阳县| 仪陇县| 新竹市| 二连浩特市| 定安县| 无棣县| 建始县| 洪雅县| 义乌市| 甘洛县| 肥西县| 陆川县| 海门市| 苍梧县|