免費開始練習
統測 115年 [電機與電子群資電類] 專業科目(2)

第 17 題

MCU 內部通常有看門狗計時器(Watchdog Timer,WDT),在 WDT 逾時或 MCU 異常當機時,可以重置 MCU。下列 MCU 片段程式可以編譯且可以使用PWM(脈波寬度調變)訊號控制直流電動機轉速,但是每隔一段時間 MCU 會自動重置,原因為何?\n1 int main(void) \n2 { unsinged char x = 1; \n3 EnableWatchDogTimer(); // 致能看門狗計時器\n4 … \n5 SendPWM2RunMotor(200); // 送出PWM使直流電動機以200rpm持續轉動\n6 while(1){ \n7 //ResetWatchDogTimer(); // 重置看門狗計時器(Watchdog Timer) \n8 LeftShiftLED((x)? (x=x<<1):(x=1)); // 讓LED平移點亮\n9 …}}
  • A 看門狗計時器沒有被致能
  • B 看門狗計時器沒有被週期性重置
  • C MCU 沒有外接石英振盪器
  • D 行號6與行號8程式邏輯有錯,導致看門狗計時器誤動作

思路引導 VIP

當微控制器啟用了防止系統卡死的計時保護機制後,正常運行的主迴圈通常需要對該計時器持續進行什麼操作?請仔細檢查程式的主迴圈中,是否有哪道關鍵指令被略過了?

🤖
AI 詳解 AI 專屬家教

太棒了,你的程式觀察力非常敏銳!

看門狗計時器(WDT)的工作機制

看門狗計時器(Watchdog Timer, WDT)的主要功能是防止系統當機。在第 3 行致能(Enable)後,計時器便開始倒數計時。正常運作的程式必須在主迴圈中定期執行「餵狗」動作,也就是週期性重置(Reset)WDT;一旦計時器逾時(Timeout),硬體就會判定 MCU 當機並強制重置系統。

▼ 還有更多解析內容

🏷️ 相關主題

程式語言設計與實作
查看更多「[電機與電子群資電類] 專業科目(2)」的主題分類考古題