




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第12章章 看門狗看門狗12.1 獨立看門狗獨立看門狗IWDGl12.1.1獨立看門狗特性獨立看門狗特性l (1)時鐘完全獨立,由內部)時鐘完全獨立,由內部RC振蕩器振蕩器(LSI)提供;因此即提供;因此即使主時鐘發生故障無法運行,獨立看門狗依然能夠正常運使主時鐘發生故障無法運行,獨立看門狗依然能夠正常運轉。轉。l ( 2 )獨立看門狗計數器自動遞減;)獨立看門狗計數器自動遞減;l (3)看門狗被激活后,如果在計數器減為)看門狗被激活后,如果在計數器減為0之前仍然沒有之前仍然沒有手動重新加載計數值,看門狗便產生復位。手動重新加載計數值,看門狗便產生復位。l (4)如果用戶在選擇字節中啟用了)
2、如果用戶在選擇字節中啟用了“硬件看門狗硬件看門狗”功能,在功能,在系統上電復位后,看門狗會自動開始運行;如果在計數器系統上電復位后,看門狗會自動開始運行;如果在計數器計數結束前,若軟件沒有向鍵寄存器寫入相應的值,則系計數結束前,若軟件沒有向鍵寄存器寫入相應的值,則系統會產生復位。此功能需要編譯器或者其他第三方工具的統會產生復位。此功能需要編譯器或者其他第三方工具的支持才可以用。支持才可以用。 l (5)軟件啟動看門狗需要往)軟件啟動看門狗需要往IWDG_KR寄存器寫入寄存器寫入0XCCCC。l12.1.2 寄存器訪問時序寄存器訪問時序l IWDG_PR和和IWDG_RLR寄存器不同與其他寄存器
3、,這兩個寄存器不同與其他寄存器,這兩個寄存器具有寫保護,在修改這兩個寄存器之前,必須先向寄存器具有寫保護,在修改這兩個寄存器之前,必須先向IWDG_KR寄存器寫入寄存器寫入0X5555,其他值將會打亂操作順序,其他值將會打亂操作順序,寄存器將重新被保護。在正確寫入寄存器將重新被保護。在正確寫入0X5555后,再往寄存器后,再往寄存器IWDG_RLR寫入寫入0XAAAA即可實現計數器值的重裝載,否則即可實現計數器值的重裝載,否則在計數器為在計數器為0時將會產生復位。時將會產生復位。l12.1.3 預分頻和重裝值預分頻和重裝值l 寄存器寄存器IWDG_PR的低的低3位控制了獨立看門狗的時鐘分頻系位
4、控制了獨立看門狗的時鐘分頻系數,數,IWDG_RLR的低的低12位控制了看門狗的計數值,這兩個位控制了看門狗的計數值,這兩個寄存器最終決定了看門狗的超時時間。寄存器最終決定了看門狗的超時時間。l 由于內部由于內部RC振蕩器振蕩器(LSI)的精度誤差很大,的精度誤差很大,LSI的振蕩頻率為的振蕩頻率為30K60KHz之間,因此實際的超時時間和預設的存在一定之間,因此實際的超時時間和預設的存在一定差異。通過對差異。通過對LSI進行校準可獲得相對精確的看門狗超時時進行校準可獲得相對精確的看門狗超時時間。間。12.2 IWDG寄存器描述寄存器描述l12.2.1 鍵寄存器鍵寄存器IWDG_KRl12.2
5、.2 預分頻寄存器預分頻寄存器IWDG_PR12.2.3 重裝載寄存器重裝載寄存器IWDG_RLRl12.2.4 狀態寄存器狀態寄存器IWDG_SR12.3 窗口看門狗窗口看門狗WWDGl12.3.1 窗口看門狗特性窗口看門狗特性l 時鐘由時鐘由PCLK1提供;時鐘精度比較高,通常被用來做監測;提供;時鐘精度比較高,通常被用來做監測;l 可編程的自由遞減計數器;可編程的自由遞減計數器;l 如果啟動如果啟動WWDG,當遞減計數器值為,當遞減計數器值為0X40時,如果允許中時,如果允許中斷,將會產生早期喚醒中斷斷,將會產生早期喚醒中斷EWI,可以用于重載計數器以避,可以用于重載計數器以避免被復位;
6、當遞減計數器小于免被復位;當遞減計數器小于0X40時,將會產生復位;如時,將會產生復位;如果在遞減計數器的值還未達到窗口值時又被軟件重新載入果在遞減計數器的值還未達到窗口值時又被軟件重新載入,也會產生復位。也就是說,計數值的重新載入不能太早,也會產生復位。也就是說,計數值的重新載入不能太早,也不能太晚,必須在設定的時間窗口內進行。,也不能太晚,必須在設定的時間窗口內進行。l12.3.2 配置窗口看門狗配置窗口看門狗l 應用程序在正常運行過程中必須定期地寫入應用程序在正常運行過程中必須定期地寫入WWDG_CR寄寄存器以防止存器以防止MCU發生復位。只有當計數器值小于窗口寄存發生復位。只有當計數器
7、值小于窗口寄存器的值時,才能進行寫操作。儲存在器的值時,才能進行寫操作。儲存在WWDG_CR寄存器中寄存器中的數值必須在的數值必須在0 xFF和和0 xC0之間:之間: l 啟動看門狗啟動看門狗 l 在系統復位后,看門狗總是處于關閉狀態,設置在系統復位后,看門狗總是處于關閉狀態,設置WWDG_CR寄存器的寄存器的WDGA位能夠開啟看門狗,隨后它不位能夠開啟看門狗,隨后它不能再被關閉,除非發生復位。能再被關閉,除非發生復位。 l 控制遞減計數器控制遞減計數器 l 遞減計數器處于自由運行狀態,即使看門狗被禁止,遞減遞減計數器處于自由運行狀態,即使看門狗被禁止,遞減計數器仍繼續遞減計數。當看門狗被啟
8、用時,計數器仍繼續遞減計數。當看門狗被啟用時,T6位必須被位必須被設置,以防止立即產生一個復位,因此寫入的最小值為設置,以防止立即產生一個復位,因此寫入的最小值為0XC0。 T5:0位包含了看門狗產生復位之前的計時數目;位包含了看門狗產生復位之前的計時數目;復位前的延時時間在一個最小值和一個最大值之間變化,復位前的延時時間在一個最小值和一個最大值之間變化,這是因為寫入這是因為寫入WWDG_CR寄存器時,預分頻值是未知的。寄存器時,預分頻值是未知的。 l 配置寄存器配置寄存器(WWDG_CFR) 中包含窗口的上限值:要避免產中包含窗口的上限值:要避免產生復位,遞減計數器必須在其值小于窗口寄存器的
9、數值并生復位,遞減計數器必須在其值小于窗口寄存器的數值并且大于且大于0 x3F時被重新裝載,時被重新裝載,0描述了窗口寄存器的工作過描述了窗口寄存器的工作過程。程。 另一個重裝載計數器的方法是利用早期喚醒中斷另一個重裝載計數器的方法是利用早期喚醒中斷(EWI)。設置。設置WWDG_CFR寄存器中的寄存器中的WEI位開啟該中斷。當位開啟該中斷。當遞減計數器到達遞減計數器到達0 x40時,則產生此中斷,相應的中斷服務時,則產生此中斷,相應的中斷服務程序程序(ISR)可以用來加載計數器以防止可以用來加載計數器以防止WWDG復位。在復位。在WWDG_SR寄存器中寫寄存器中寫0可以清除該中斷。可以清除該
10、中斷。 l 超時的計算公式如下:超時的計算公式如下:l TWWDG = TPCLK1 x 4096 x 2WDGTBx (T5:0 + 1); (ms) l TPCLK1:APB1以以ms為單位的時鐘間隔為單位的時鐘間隔 l 在在PCLK1 = 36MHz時的最小時的最小-最大超時值最大超時值12.4 WWDG看門狗寄存器看門狗寄存器l12.4.1 控制寄存器控制寄存器WWDG_CRl12.4.2 配置寄存器配置寄存器WWDG_CFRl12.4.3 狀態寄存器狀態寄存器WWDG_SR12.5 WWDG庫函數庫函數l12.5.1 WWDG寄存器結構寄存器結構l WWDG_TypeDeff,在文件
11、,在文件“sm32f10 x_map.h”中定義如中定義如下:下: l typedef struct l l vu32 CR; l vu32 CFR; l vu32 SR; l WWDG_TypeDef; l 列舉了列舉了WWDG所有寄存器所有寄存器 l12.5.2 WWDG庫函數庫函數l 1.函數函數void WWDG_DeInit( void )l 功能描述:將外設功能描述:將外設WWDG寄存器重設為缺省值寄存器重設為缺省值l 例:例: WWDG_DeInit(); l 2 函數函數void WWDG_SetPrescaler(u32 WWDG_Prescaler)l 功能描述:功能描述:
12、設置設置WWDG預分頻值預分頻值l 輸入參數:輸入參數:WWDG_Prescaler:指定:指定WWDG預分頻,該預分頻,該參數設參數設WWDG預分頻值如下預分頻值如下l 例:例: WWDG_SetPrescaler(WWDG_Prescaler_8);l 3 函數函數 void WWDG_SetWindowValue(u8 WindowValue)l 功能描述:設置功能描述:設置WWDG窗口值窗口值l 輸入參數:輸入參數:WindowValue:指定的窗口值。取值在:指定的窗口值。取值在0 x40-0 x7F之間(可用于之間(可用于0-64分頻)分頻)l 例:例:WWDG_SetWindow
13、Value(0 x50); l 4 函數函數WWDG_EnableITl 函數原形函數原形void WWDG_EnableIT(void) l 功能描述功能描述使能使能WWDG早期喚醒中斷(早期喚醒中斷(EWI)-CFR.Bit9l 例:例: WWDG_EnableIT(); l 5 函數函數void WWDG_SetCounter(u8 Counter)l 功能描述功能描述設置設置WWDG計數器值計數器值l 輸入參數輸入參數Counter:指定看門狗計數器值。參數取值在:指定看門狗計數器值。參數取值在0 x40-0 x7F之間。之間。l 例:例:WWDG_SetCounter(0 x70);
14、 l 6 函數函數 Void WWDG_Enable(u8 Counter) l 功能描述功能描述使能使能WWDG并裝入計數器值(并裝入計數器值(1)l 輸入參數輸入參數Counter:指定看門狗計數器值。參數取值在:指定看門狗計數器值。參數取值在0 x40-0 x7F 之間之間l WWDG一旦被使能就不能被失能。一旦被使能就不能被失能。l 例:例: WWDG_Enable(0 x7F); l 7 函數函數FlagStatus WWDG_GetFlagStatus(void) l 功能描述功能描述:檢查檢查WWDG早期喚醒中斷標志位被設置與否早期喚醒中斷標志位被設置與否l 返回值:返回值:早期
15、喚醒中斷標志位的新狀態(早期喚醒中斷標志位的新狀態(SET或或RESET)先決)先決l 例:例:l FlagStatus Status; l Status = WWDG_GetFlagStatus(); l if(Status = RESET) . l else . l 8.函數函數void WWDG_ClearFlag(void)l 功能描述功能描述清除早期喚醒中斷標志位清除早期喚醒中斷標志位l 例:例: WWDG_ClearFlag();12.6 看門狗應用示例看門狗應用示例l 本節例程使用了本節例程使用了ST官方提供的固件庫實現獨立看門狗超時官方提供的固件庫實現獨立看門狗超時復位。本例程設置獨立看門狗超時復位時間為復位。本例程設置獨立
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論