MicroPython STM32F4 RTC功能使用介绍
- STM32和ESP32 RTC功能差不多,相关篇《MicroPython ESP32 RTC功能使用介绍》
- 固件刷可参考前面一篇《STM32刷Micropython固件参考指南》
- 相关篇《Micropython STM32F4入门点灯》
- 固件下载:
https://micropython.org/download/?mcu=stm32f4
- 本例程基于
STM32F4DISC
,主控芯片STM32F407VGT6
,使用固件版本:MicroPython v1.20.0 on 2023-04-26
- mpy RTC功能,可以参考Micropython官方开发参考文档:
https://docs.micropython.org/en/latest/pyboard/quickref.html#rtc-real-time-clock
- 开发平台基于
Thonny
RTC属于mpy模块中的类
>>> from pyb import RTC
>>> help(RTC)
object <class 'RTC'> is of type type
init -- <function>
info -- <function>
datetime -- <function>
wakeup -- <function>
calibration -- <function>
RTC.wakeup(timeout, callback=None)
:配置RTC唤醒定时器设置,为每毫秒重复触发一次。此触发器可以将 pyboard 从睡眠状态唤醒pyb.stop()和 pyb.standby()。如果timeout=None
,则唤醒定时器被禁用。带参数,则在每次触发时执行唤醒定时器。 唤醒回调函数:callback
rtc.init()
:配置为系统默认的一个出厂时间。
rtc.datetime()
:如果不带参数则是获取时间(元组)。带参数则是设置时间。(年、月、日、工作日、小时、分钟、秒、亚秒)
rtc.info()
:获取有关启动时间和重置源的信息。
- 较低的0xffff是 RTC 花费的毫秒数 启动。
- 如果发生上电复位,则设置位 0x10000。
- 如果发生外部复位,则设置位 0x20000
rtc.calibration (cal)
:获取或设置 RTC 校准。
- 不带参数,calibration() 返回当前校准值,它是 [-511 : 512] 范围内的整数。用一个参数设置 RTC 校准。
- 带参数,RTC 平滑校准机制通过在 32 秒周期内(对应于 2^20 个时钟滴答)从 32768 Hz 时钟中添加或减去给定数量的滴答来调整 RTC 时钟速率。添加的每个滴答将使时钟加快 1 部分2^20 或 0.954 ppm;同样,RTC 时钟也减慢了负值。可用的校准范围是:(-511 * 0.954) ~= -487.5 ppm 到 (512 * 0.954) ~= 488.5 ppm
RTC测试代码
from pyb import RTC
import time
# 定义星期数组
weekdays = ['Sunday','Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
rtc = RTC()
rtc.datetime((2023, 11, 28, 2, 21, 10, 15, 0)) # set a specific date and time
if __name__ == '__main__':
while True:
# Get the current time from the RTC
current_time = rtc.datetime()
print(current_time) # get date and time
time.sleep(1)
year, month, day,weekday, hour, minute, second, yearday = rtc.datetime()
# 获取星期对应的数组成员
weekday_name = weekdays[weekday]
print("当前时间:{}-{}-{} {}:{}:{} Week:{}".format(year, month, day, hour, minute, second,weekday_name))