欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2068|回復: 0
收起左側

STM32看門狗操作

[復制鏈接]
ID:365205 發表于 2018-7-4 21:50 | 顯示全部樓層 |閱讀模式

窗口看門狗( WWDG)通常被用來監測由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產生的軟件故障。

簡單來說,和IWDG的區別就是IWDG要靠手動去喂狗,而WWDG有內置中斷,所以可以利用設置中斷服務函數去喂狗

首先還是設置WWDG (記得往工程里面添加頭文件)大致設置步驟如下:

1)使能 WWDG 時鐘(系統內部時鐘)

2)設置窗口值和分頻數

3)開啟 WWDG 中斷并分組

4) 設置計數器初始值并使能看門狗

5) 編寫中斷服務函數

  • #include "led.h"



  • #include "wwdg.h"



  • //保存 WWDG 計數器的設置值,默認為最大.



  • u8 WWDG_CNT=0x7f;



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



  • {



  •         RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);



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



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



  •         WWDG_Enable(tr); //使能看門狗 , 設置 counter .



  •         WWDG_ClearFlag();



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



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



  • }



  • void WWDG_NVIC_Init(void)



  • {



  •         NVIC_InitTypeDef NVIC_ist;



  •         NVIC_ist.NVIC_IRQChannel=WWDG_IRQn;



  •         NVIC_ist.NVIC_IRQChannelPreemptionPriority=2;



  •         NVIC_ist.NVIC_IRQChannelSubPriority=3;



  •         NVIC_ist.NVIC_IRQChannelCmd=ENABLE;



  •         NVIC_Init(&NVIC_ist);



  • }



  • void WWDG_IRQHandler(void)



  • {



  •         WWDG_SetCounter(0x7f);//喂狗



  •         WWDG_ClearFlag();//清除提前喚醒標志



  •         LED1=!LED1;//檢測中斷函數是否工作了

  • }

簡單來講(只是個人愚見)就是WWDG是一個遞減的計數器,從最大值遞減到0,到0的時候如果沒喂狗(就是重置計數器,比如說將它重置為最大值)就會復位,但中斷觸發是在中途進行的,就是當遞減到0x40的時候就會觸發中斷,這時候會轉到我們寫的中斷服務函數里面去,只要我們在中斷服務函數里面寫喂狗函數就可以一直喂狗了



評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表