c++視窗 owner_STM32微控制器:獨立看門狗、視窗看門狗的配置
阿新 • • 發佈:2020-12-17
技術標籤:c++視窗 ownerproteus stm32 定時器pyqt 只能開啟子視窗一次rplidar stm32stm32 fatfs fopen err_disk_stm32 i2c cube
SATM32微控制器的看門狗有獨立看門狗和視窗看門狗之分,這兩者的工作原理卻完全不同,今天來看一下他們的具體區別和配置方法。 ▍STM32獨立看門狗 由專門的低速時鐘(LSI)驅動,即便是主時鐘發生故障它仍能夠有效,所以此狗狗可以工作在與主時鐘無關的要求下,或者待機模組下等,所以它叫獨立看門狗,注意一旦開啟此看門狗則只能由MCU復位後才清除,讓它不再工作。 它的時鐘是一個內部RC時鐘,它會在30KHZ到60KHZ之間變化,並非是精確的40KHZ,而只是一般計算時取40KHZ。 獨立看門狗需設定四個暫存器如下:
//時間計算(大概):Tout=((4*2^prer)*rlr)/40(ms)
voidIWDG_Init(u8prer,u16rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
IWDG_SetPrescaler(prer);
IWDG_SetReload(rlr);
IWDG_ReloadCounter();
IWDG_Enable();
}
喂狗可通過呼叫如下函式進行:
IWDG_ReloadCounter();//reload
另外要注意不要使用硬體時鐘中斷喂狗,因為硬體時鐘中斷一般都有較高優先順序且獨立於主控程式,這樣有時會出現主控程式雖然跑飛了,但仍能夠正常喂狗的現象。
獨立看門狗能夠在一定程度上監控著程式正常執行,然而我認為更加強大,應用更靈活及更能保證程式穩定執行的還屬視窗看門狗,雖然它開始時不太好理解。
▍//視窗看門狗中斷服務設定程式
voidWWDG_NVIC_Init()
{
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;//WWDG中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//搶佔2子優先順序3組2
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//搶佔2,子優先順序3,組2
NVIC_Init(&NVIC_InitStructure);//NVIC初始化
}
//儲存WWDG計數器的設定值,預設為最大.
u8WWDG_CNT=0x7f;
//初始化視窗看門狗
//tr:T[6:0],計數器值
//wr:W[6:0],視窗值
//fprer:分頻係數(WDGTB),僅最低2位有效
//Fwwdg=PCLK1/(4096*2^fprer).
voidWWDG_Init(u8tr,u8wr,u32fprer)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);//WWDG時鐘使能
WWDG_CNT=tr&WWDG_CNT;//初始化WWDG_CNT.
WWDG_SetPrescaler(fprer);//設定IWDG預分頻值
WWDG_SetWindowValue(wr);//設定視窗值
WWDG_Enable(WWDG_CNT);//使能看門狗,設定counter
WWDG_ClearFlag();//清除提前喚醒中斷標誌位(注:若沒有此句則會在初始化後先進入中斷一次)
WWDG_NVIC_Init();//初始化視窗看門狗NVIC
WWDG_EnableIT();//開啟視窗看門狗中斷
}
以上程式碼朋友們也可以跳到庫函式程式碼中自己研究下,另外要說明下的是WWDG_EnableIT(); 函式相關程式碼
#defineCFR_EWI_BB(PERIPH_BB_BASE+(CFR_OFFSET*32)+(EWI_BitNumber*4))
用到位帶操作,具體理解可參照《Cortex-M3權威指南》第五章的位帶操作相關介紹(具體89頁)。
推薦閱讀:
軟硬體之間其實還有一個韌體!你知道嗎?
為什麼會有0歐電阻這種東西?
你眼裡的嵌入式工程師是這樣的嗎?
模組化程式設計到底有多重要?
硬體工程師日常崩潰圖鑑
33歲入行嵌入式軟體開發晚不晚啊?
乾貨||稀里煳塗學習STM32完整版
【視訊】教你DC-DC及做一個開關電源,不信你學不會!
什麼是PWM“死區”?
這2個微控制器程式設計的思想,請你掌握
長文:嵌入式程式設計師的程式設計修養
485通訊自動收發電路 歷史上最詳細的解釋
多個微控制器的通訊方式【詳細】
10個微控制器電路設計中的難點,你都解決了嗎?