1. 程式人生 > >MSP430看門狗使用筆記&&低功耗模式下如何用看門狗監控程序跑飛

MSP430看門狗使用筆記&&低功耗模式下如何用看門狗監控程序跑飛

register 循環 就會 但是 thold 溢出 避免 都是 由於

一、看門狗簡介

1、看門狗可用來當定時器計時,也可用來防止程序跑死。主要對應到兩種工作模式,定時器模式和看門狗模式。

2、MSP430默認看門狗模式打開,因此一般在程序初始化前,會用到指令“WDTCTL = WDTPW + WDTHOLD”關閉看門狗模式,不然程序會一直超時重啟。

3、如果想啟用看門狗的定時器功能或看門狗超時復位功能,則需要對看門狗進行重新設置,以下將詳細介紹。

二、定時器模式

1、設置成定時器模式時,超時溢出後,會進入看門狗中斷函數。這樣就可以當定時器用了。

2、註意當設置成定時器模式,計時溢出後,只進入看門狗中斷函數,不會軟重啟MCU。溢出後自動重新計時。

3、設置成定時器模式,可以根據選擇的時鐘源和分頻參數,進行不同時間參數的定時(測試過可以進行1s、8s、60s等參數的定時)。

4、由於看門狗定時器模式定時的時間和選擇的時鐘源和分頻有關,所以只能進行一些典型參數的定時,跟普通的定時器有區別。

技術分享圖片

上圖是庫中列出的一些可以直接調用的接口,只定義了幾種時間參數接口。其實可以自己對WDTCTL進行配置,得出其他的超時溢出參數,具體可以參照例程修改測試。

三、看門狗模式

1、設置成看門狗模式後,超時溢出後,就不會進入所謂程序裏面的看門狗中斷函數裏,所以要在溢出前用指令進行餵狗,才能不會誤復位。

2、餵狗其實就是對WDTCTL重新配置,也可切成關閉或定時器模式。對比上圖中對定時器模式和看門狗模式的接口設置,可以看出區別就是定時器模式多了WDTTMSEL。

3、看門狗模式可以設置的超時時間其實與定時器模式差不多,可以參考定時器模式的時鐘源和分頻參數,進行超時時間設置(比如1s、8s、60s等都可以)。

四、低功耗模式 && 看門狗模式

1、一般設備都需要設置成低功耗待機模式,同時又想開啟看門狗防止程序跑死,在這種情況下,就需要註意以下的幾點了。

2、低功耗模式不能選擇LPM4模式,最理想的方案是推薦選擇LPM3模式,因為LPM4模式中時鐘源SMCLK和ACLK都是關閉的。

3、待機時如果是進入了LPM3模式,而且程序一開始就設置成了看門狗模式,由於程序執行“__bis_SR_register(LPM3_bits | GIE)”指令後,就會一直循環在這,不會跳到餵狗指令,因此結果就會導致超時重啟,這種現象是有方法避免的,方法有兩種,詳見下文。

4、方法一,可以一開始把看門狗設置成定時器模式,超時溢出進入看門狗中斷時退出低功耗模式;在主循環程序一開始設置成看門狗模式,在進入LPM3之前設置成定時器模式。

5、方法二,可以開始一個定時器用於餵狗,但是考慮到低功耗和資源的節約利用,推薦使用第一種方法,即可實現低功耗模式和看門狗模式的沖突問題。

MSP430看門狗使用筆記&&低功耗模式下如何用看門狗監控程序跑飛