27. Giới thiệu về RTC (Real-Time Clock) 
Giới thiệu RTC 
RTC là viết tắt của Real-Time Clock (đồng hồ thời gian thực). Đây là một mô-đun hoặc chip phần cứng dùng để cung cấp thông tin ngày và giờ chính xác. RTC có nguồn điện độc lập với các thành phần hệ thống khác, vì vậy ngay cả khi máy tính hoặc thiết bị tắt hoặc mất điện, nó vẫn có thể duy trì thời gian chính xác.
RTC thường bao gồm một bộ dao động thạch anh và một bộ đếm. Dao động thạch anh tạo ra tín hiệu dao động với tần số cố định, bộ đếm sẽ tính toán dựa trên tín hiệu này để đo thời gian. Bộ đếm có thể lưu trữ thông tin ngày, giờ, phút, giây… và có thể được đọc hoặc cập nhật theo nhu cầu. Về bản chất, RTC là một bộ đếm 1 giây: chỉ cần cung cấp xung nhịp 1 Hz thì RTC sẽ đếm được 1 giây.
Ngoài việc cung cấp thời gian chính xác, RTC còn hỗ trợ chức năng báo thức, bộ định thời và lịch. RTC thường được hệ điều hành hoặc ứng dụng sử dụng để lấy thông tin thời gian hiện tại và áp dụng vào nhiều mục đích khác nhau, ví dụ: ghi log, đánh dấu thời gian file, hoặc lập lịch tác vụ.
Giới thiệu ngoại vi RTC trên STM32F407 
Trên vi điều khiển STM32F407, ngoại vi RTC được tích hợp sẵn, hỗ trợ theo dõi và đo lường thời gian chính xác. Một số đặc điểm quan trọng:
- Nguồn xung nhịp: RTC có thể dùng xung nhịp nội bộ hoặc bên ngoài. - Nội bộ: IRC32K (clock thấp tần 32 kHz).
- Ngoại vi: thạch anh 32.768 kHz hoặc clock ngoài 2–31 MHz.
 
- Định dạng thời gian: Hỗ trợ biểu diễn theo chuẩn BCD (Binary-Coded Decimal), lưu trữ và theo dõi năm, tháng, ngày, tuần, giờ, phút, giây.
- Chức năng báo thức: Có thể cài đặt giờ/ngày để kích hoạt ngắt báo thức. Ứng dụng: nhắc nhở hoặc đánh thức hệ thống.
- Bộ định thời (Timer): Hỗ trợ định thời theo giây, phút, giờ hoặc ngày. Có thể tạo ngắt định kỳ, tự động nạp lại.
- Ngắt ngoài: Có thể nhận tín hiệu từ ngoài để kích hoạt sự kiện RTC, dùng cho đánh thức CPU hoặc xử lý tức thì.
- Thanh ghi dự phòng: Cung cấp các thanh ghi lưu trữ giá trị hiệu chỉnh LSE, cờ trạng thái hoặc dữ liệu tùy chọn của người dùng. Các thanh ghi này vẫn giữ nguyên trong chế độ tiết kiệm điện.

Nguồn cấp cho RTC 
Phần lõi của RTC nằm trong miền dự phòng (Backup Domain), được cấp bởi hai nguồn: VDD và VBAT.
- Khi VBAT còn điện, các thiết lập và thời gian của RTC vẫn giữ nguyên dù hệ thống reset hoặc thoát khỏi chế độ Standby.
- Một phần khác của RTC (gồm giao diện APB và thanh ghi điều khiển) lại thuộc miền nguồn VDD, không ảnh hưởng đến phần đếm của RTC.

Thông thường, nguồn VBAT được cấp từ pin dự phòng gắn vào chân VBAT (ví dụ pin CR2032). Nhờ đó, RTC vẫn hoạt động khi mất nguồn chính. Ngoài ra, VBAT cũng có thể nhận nguồn từ hệ thống chính để vừa hoạt động vừa nạp duy trì pin dự phòng, tránh tình trạng pin cạn làm mất thời gian hệ thống.