워치독과 저전력 모드
프로그램이 멈추면 스스로 리셋하는 워치독, 배터리 기기를 위한 슬립, 스톱, 스탠바이 모드.
워치독
정해진 시간 안에 "아직 살아 있다"고 신호를 주지 않으면 MCU를 리셋합니다.
| 종류 | 특징 |
|---|---|
| IWDG (독립) | 별도 LSI 클럭, 메인 클럭이 죽어도 동작 |
| WWDG (윈도우) | 너무 늦어도, 너무 빨라도 리셋 |
올바르게 쓰기
- 타이머 인터럽트 안에서 워치독을 갱신하면 메인 루프가 멈춰도 리셋되지 않습니다. 메인 루프나 모든 태스크가 정상임을 확인한 곳에서 갱신합니다.
- RTOS라면 각 태스크가 "살아 있음" 플래그를 세우고, 감시 태스크가 모두 확인했을 때만 갱신합니다.
- 리셋 후
RCC->CSR의 리셋 원인 플래그로 워치독 리셋이었는지 기록합니다.
저전력 모드 (STM32 일반)
| 모드 | 멈추는 것 | 깨우는 방법 | 소비 전류 |
|---|---|---|---|
| Sleep | CPU만 | 아무 인터럽트 | mA |
| Stop | 대부분 클럭 | 외부 인터럽트, RTC | µA |
| Standby | 거의 전부, RAM 소실 | 웨이크업 핀, RTC | 1µA 이하 |
Stop에서 깨어나면 클럭이 HSI로 돌아와 있어서 PLL을 다시 설정해야 합니다. 배터리 수명은 "깨어 있는 시간 × 동작 전류 + 잠든 시간 × 대기 전류"로 계산합니다.