找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2119|回復(fù): 0
收起左側(cè)

基于STM32F4的窗口看門狗實現(xiàn)源程序

[復(fù)制鏈接]
ID:877778 發(fā)表于 2021-1-15 10:56 | 顯示全部樓層 |閱讀模式
窗口看門狗(WWDG)通常被用來監(jiān)測由外部干擾或不可預(yù)見的邏輯條件造成的應(yīng)用程序背離正常的運行序列而產(chǎn)生的軟件故障。
窗口看門狗的超時公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1;
其中:
Twwdg:WWDG 超時時間(單位為 ms)
Fpclk1:APB1 的時鐘頻率(單位為 Khz)
WDGTB:WWDG 的預(yù)分頻系數(shù)
T[5:0]:窗口看門狗的計數(shù)器低 6 位
        DS0(連接在PF9) ,DS1(連接在PF10。程序一運行則開啟WWDG,并使得DS0亮300ms后關(guān)閉,進入死循環(huán)。等待WWDG中斷的到來,在中斷里面,喂狗,并執(zhí)行DS1的翻轉(zhuǎn)操作。所以可以看到DS1不停的閃爍,而DS0只在剛啟動的時候閃一下。
窗口看門狗.c文件如下。
  1. u8 WWDG_CNT=0X7F;
  2. //初始化窗口看門狗
  3. //tr :T[6:0],計數(shù)器值 wr :W[6:0],窗口值
  4. //fprer:分頻系數(shù)(WDGTB),僅最低 2 位有效
  5. //Fwwdg=PCLK1/(4096*2^fprer). 一般 PCLK1=42Mhz
  6. void WWDG_Init(u8 tr,u8 wr,u32 fprer)
  7. {
  8. NVIC_InitTypeDef NVIC_InitStructure;
  9. RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
  10. //使能窗口看門狗時鐘
  11. WWDG_CNT=tr&WWDG_CNT; //初始化 WWDG_CNT.
  12. WWDG_SetPrescaler(fprer); //設(shè)置分頻值
  13. WWDG_SetWindowValue(wr); //設(shè)置窗口值
  14. WWDG_SetCounter(WWDG_CNT);//設(shè)置計數(shù)值
  15. WWDG_Enable(WWDG_CNT); //開啟看門狗
  16. NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn; //窗口看門狗中斷
  17. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02; //搶占優(yōu)先級為 2
  18. NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //響應(yīng)優(yōu)先級為 3
  19. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能窗口看門狗
  20. NVIC_Init(&NVIC_InitStructure);
  21. WWDG_ClearFlag();//清除提前喚醒中斷標(biāo)志位
  22. WWDG_EnableIT();//開啟提前喚醒中斷
  23. }
  24. //窗口看門狗中斷服務(wù)程序
  25. void WWDG_IRQHandler(void)
  26. {
  27. WWDG_SetCounter (WWDG_CNT); //重設(shè)窗口看門狗值
  28. WWDG_ClearFlag();//清除提前喚醒中斷標(biāo)志位
  29. LED1=!LED1;
  30. }
復(fù)制代碼

全部程序51hei下載地址:
STM32F4窗口看門狗.7z (294.42 KB, 下載次數(shù): 15)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表