回到正題,每一間MCU公司幾乎都有推出自己的範例程式(還沒看過沒提供sample code的產品線),但是TI的範例程式很妙,第一行就是先把Watch Dog Timer關閉。很好奇,但一直沒花時間去找答案,看Programming Guide好像也沒特別解釋。
今天心血來潮,查到一篇在StackExchange上的討論串,才發現原因其實很簡單。
TI MSP系列產品的Watch Dog Timer是預設開啟的,所以如果初學新手沒有把Watch Dog Timer關閉,也沒有在程式裡將Watch Dog 的ISR設定好,這樣MCU會不斷的重新啟動 (Reset),會造成新手在學習過程中感到疑惑。所以TI提供的範例程式,第一行就是
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
另外,Watch Dog Timer既然是一個timer,user也可以藉此把一些固定的行為放入Watch Dog Timer的ISR裡面執行,充分利用硬體所提供的timer。
還有就是,Watch Dog 必須在程式中確認某些條件有被妥善設定或給值,才不會將MCU重設,這個過程叫做餵狗,Feed the dog,如果忘記餵狗,WAT (Watch Dog Timer)就會把系統重設啦~
參考資料: