class RTC -- đồng hồ thời gian thực¶
Lớp RTC điều khiển ngoại vi đồng hồ thời gian thực tích hợp trên MCU, duy trì thời gian thực qua các lần reset.
Trên STM32 OpenMV Cams, machine.RTC và pyb.RTC tham chiếu đến cùng một đối tượng bên dưới.
Ví dụ sử dụng:
import machine
rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())
Hàm khởi tạo¶
- class machine.RTC(id: int = 0)¶
Trả về singleton
RTC.idđược chấp nhận để tương thích giữa các cổng nhưng chỉ0là hợp lệ trên các cổng được OpenMV hỗ trợ (mỗi cam có một RTC).Các phương thức bên dưới được nhóm theo cổng OpenMV nào cung cấp chúng.
Các phương thức có sẵn trên tất cả các cổng OpenMV¶
- datetime(datetimetuple: tuple | None = None, /) tuple | None¶
Lấy hoặc đặt ngày và giờ hiện tại.
Không có đối số, trả về giá trị hiện tại dưới dạng tuple 8 phần tử
(year, month, day, weekday, hour, minute, second, subseconds).Với một đối số tuple 8 phần tử, đặt RTC về giá trị đó.
weekdaylà 1 = Thứ Hai đến 7 = Chủ Nhật trên STM32, và 0 = Thứ Hai đến 6 = Chủ Nhật trên mimxrt.subsecondslà phần thập phân của giây theo đơn vị 1/256 giây trên STM32; trên mimxrt và alif nó luôn là0.
Chỉ STM32 + mimxrt¶
- init(datetime: tuple) None¶
Khởi tạo RTC.
Trên cổng mimxrt (OpenMV Cam RT1062),
datetimelà bắt buộc và sử dụng tuple 8 phần tử(year, month, day, weekday, hour, minute, second, subseconds).Trên STM32 OpenMV cams,
init()không nhận đối số: nó (tái) khởi động ngoại vi RTC, giữ nguyên ngày / giờ hiện tại.
- calibration(value: int | None = None, /) int | None¶
Lấy hoặc đặt độ lệch hiệu chỉnh của RTC (dùng để bù sai số tần số thạch anh).
Phạm vi chấp nhận và đơn vị của
valuephụ thuộc vào phần cứng -- giá trị được ghi trực tiếp vào thanh ghi điều chỉnh RTC của MCU. Xem tài liệu tham khảo STM32 / i.MX RT liên quan để biết mã hóa chính xác.
Chỉ STM32¶
- info() int¶
Trả về trạng thái khởi động RTC đóng gói dưới dạng số nguyên 32-bit.
16 bit thấp cho biết số mili giây RTC cần để khởi động tại lần boot gần nhất. Bit 0x10000 được đặt khi bộ dao động LSE (ngoại tốc độ thấp) bị lỗi và RTC quay lại LSI (RC nội bộ). Bit 0x20000 được đặt khi RTC được khởi tạo mới tại boot (thay vì tiếp tục từ lần bật nguồn trước).
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
Lên lịch ngắt đánh thức định kỳ.
timeout_mslà chu kỳ tính bằng mili giây. RTC kích hoạt mỗitimeout_msvà có thể đánh thức MCU từmachine.lightsleep()/machine.deepsleep(). TruyềnNoneđể tắt bộ định thời đánh thức.callbackđược gọi từ IRQ đánh thức; truyềnNoneđể không cài đặt hàm gọi lại (đánh thức vẫn sẽ kích hoạt và đánh thức MCU).
Chỉ mimxrt + alif¶
- alarm(id: int, time: int | tuple, *, repeat: bool = False) None¶
Đặt chuông báo RTC.
idchọn kênh chuông báo (dùngALARM0).timelà số nguyên mili giây trong tương lai, hoặc một tuple datetime. Truyềnrepeat=Trueđể tự động đặt lại sau mỗi lần kích hoạt (chỉ hợp lệ khitimelà số mili giây).Trên alif, chỉ hỗ trợ dạng số mili giây.
Chỉ mimxrt¶
- alarm_left(alarm_id: int = 0, /) int¶
Trả về số mili giây còn lại trước khi chuông báo được xác định bởi
alarm_idkích hoạt.
- cancel(alarm_id: int = 0, /) None¶
Bí danh không còn được khuyến nghị cho
alarm_cancel(), được giữ lại để tương thích ngược. Dự kiến xóa trong MicroPython 2.0.
- irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None¶
Đăng ký hàm gọi lại cho chuông báo RTC.
triggerphải làALARM0-- nguồn IRQ duy nhất được hỗ trợ.handlerđược gọi với đối tượngRTCkhi chuông báo kích hoạt.hard=Trueđăng ký hàm xử lý ngắt cứng (không cấp phát heap trong hàm gọi lại).wakeđược chấp nhận để tương thích giữa các cổng nhưng không có tác dụng.
Hằng số¶
- ALARM0: int¶
Định danh cho kênh chuông báo duy nhất của RTC. Truyền vào
alarm(),alarm_left(),alarm_cancel()và đối sốtriggercủairq(). Chỉ dành cho cổng mimxrt.