看门狗与 PendSV

← 中断总览 | ← 主页


看门狗定时器

程序跑飞/死循环时自动复位,分两种:

类型时钟喂狗窗口特点
IWDG 独立看门狗LSI(~40 kHz,独立于系统时钟)无窗口,只需超时前喂独立性强,主时钟挂了也能复位
WWDG 窗口看门狗PCLK1有窗口:太早/太晚喂都复位带早期唤醒中断 (EWI),复位前能抢救数据
  • 两者都是向下计数,喂狗 = 重载计数器;超时未喂 → 系统复位。
  • WWDG 的「窗口」能抓到「喂太频繁」的异常(本该慢走的循环变快了)。
  • IWDG 一旦使能只能复位才能关,防止程序跑飞后自己把狗关掉。

PendSV(可悬起系统调用)

异常号 14,优先级通常配成最低。

  • 可悬起:置位后不立即执行,等所有更高优先级中断都退完、最后才执行。
  • RTOS 用它做上下文切换:在 SysTick 中断里只置 PendSV 悬起位 → 退出中断 → PendSV 里真正切任务栈(PSP)。
  • 好处:把「切任务」推迟到中断全部退出的安全点,不在 ISR 里直接切,避免打断高优先级中断。

PendSV + SysTick 是 RTOS 的两个内核级异常:SysTick 管「何时该切换」,PendSV 管「实际怎么切」。