🛡 درس 3: تایمر Watchdog در STM32
نویسنده: بهنام کیانی
⏱ Watchdog چیست؟
Watchdog یک تایمر مستقل و سختافزاری است که از هنگ کردن یا اختلال در عملکرد میکروکنترلر جلوگیری میکند.
اگر برنامه اصلی نتواند به موقع آن را ریست کند، میکرو را ریستارت میکند.
⏰
عملکرد Watchdog:
- تایمر شروع به شمارش میکند
- برنامه اصلی باید به طور دورهای آن را ریست کند
- اگر ریست نشود → Timeout
- میکروکنترلر ریست میشود
⚙️ کاربردهای عملی Watchdog
📝 فعالسازی IWDG در STM32CubeMX
- در تب System Core → IWDG تیک بزنید
- تنظیمات:
| پارامتر | مقدار پیشنهادی | توضیح |
|---|---|---|
| Prescaler | 256 | تقسیم کلاک LSI (~40kHz) |
| Reload Value | 780 | زمان سرریز ≈ 5 ثانیه |

تنظیم IWDG برای 5 ثانیه Timeout
💡 تنظیم GPIO برای تست
- PC13: خروجی → LED (Blue Pill)
- PC14: ورودی Pull-up → کلید
💻 کد کامل (HAL)
⚠ اگر کلید فشرده شود → Watchdog ریست نمیشود → بعد از 5 ثانیه ریستارت!
📈 نمودار عملکرد
چشمک زدن LED + ریست Watchdog
کلید فشرده → حلقه بینهایت
🔄 Timeout (5 ثانیه) → ریستارت
⚡ خلاصه درس
- Watchdog = تایمر مستقل برای جلوگیری از هنگ
- باید به طور دورهای ریست شود
- در STM32:
IWDG(Independent Watchdog) - کلاک جداگانه: ~40 kHz (LSI)
- اگر ریست نشود → میکرو ریستارت میشود