【Micropython】使用RTC

dcexpert   2016-3-19 09:17 楼主
  • 定义RTC对象
pyb.RTC
  • 读取/设置rtc
rtc.datetime([datetimetuple]) datetimetuple格式:(year, month, day, weekday, hours, minutes, seconds, subseconds) weekday is 1-7 for Monday through Sunday. subseconds counts down from 255 to 0
  • 设置唤醒定时器
rtc.wakeup(timeout, callback=None) timeout单位是毫秒
  • 获取RTC启动时间和复位源
rtc.info()
  • 获取/设置校正
rtc.calibration(cal) 无参数时读取校正值,有参数时设置校正值
  • 例子
RTC定时器2S翻转一次LED1
  1. rtc.wakeup(2000, lambda t:pyb.LED(1).toggle())
设置/读取RTC时间
  1. rtc = pyb.RTC()

  2. #set date time

    rtc.datetime((2014, 5, 1, 4, 13, 0, 0, 0))

  3. #get date time

    print(rtc.datetime())

【MicroPython】教程

回复评论 (11)

lambda t:pyb.LED(1).toggle()   这里的参数t 是不是可以不用写lambda :pyb.LED(1).toggle()
点赞  2016-4-16 11:51
引用: windworld 发表于 2016-4-16 11:51
lambda t:pyb.LED(1).toggle()   这里的参数t 是不是可以不用写lambda :pyb.LED(1).toggle()

不行,这样会造成语法错误
点赞  2016-4-16 15:03
引用: dcexpert 发表于 2016-4-16 15:03
不行,这样会造成语法错误

这里的参数t可以换成其他的a、b、c 其他的吗?
点赞  2016-4-16 17:11
引用: windworld 发表于 2016-4-16 17:11
这里的参数t可以换成其他的a、b、c 其他的吗?

变量可以随意定义,只要不和其他冲突。也不需要定义变量类型。
点赞  2016-4-16 21:32
引用: dcexpert 发表于 2016-4-16 21:32
变量可以随意定义,只要不和其他冲突。也不需要定义变量类型。

嗯 不过lambda函数查了下t这里是可选参数,应该是可以省略的,如果不需要传参的话
点赞  2016-4-17 10:00
引用: windworld 发表于 2016-4-17 10:00
嗯 不过lambda函数查了下t这里是可选参数,应该是可以省略的,如果不需要传参的话

t的确没有用,但好像没有的话会出错
点赞  2016-4-17 13:31

  1. >>> rtc.datetime(2016,9,28,5,11,05,0,0)
  2. Traceback (most recent call last):
  3.   File "<stdin>", line 1, in <module>
  4. TypeError: function expected at most 2 arguments, got 9
  5. >>> rtc.datetime(2016,9,28,4,11,05,0,0)
  6. Traceback (most recent call last):
  7.   File "<stdin>", line 1, in <module>
  8. TypeError: function expected at most 2 arguments, got 9
  9. >>>  rtc.datetime((2016,9,28,4,11,05,0,0))
  10. Traceback (most recent call last):
  11.   File "<stdin>", line 1
  12. IndentationError: unexpected indent

导入了RTC,没法设置时间
点赞  2016-9-28 11:13
引用: suoma 发表于 2016-9-28 11:13
导入了RTC,没法设置时间

前面两个提示你参数错误,需要用()。

最后一个参数形式是对的,但是缩进有问题:IndentationError: unexpected indent
点赞  2016-9-28 12:19
  1. mydt = mydatetime.DateTime(2016, 7, 10, 7, 16, 0, 0, 0)
  2.   minutesvalue = mydt.getminutes()
  3.   dayvalue = mydt.getday()

  4. if dayvalue != mydt.getday():
  5.         dayvalue = mydt.getday()
  6. ....


  7. if minutesvalue != mydt.getminutes():
  8.       minutesvalue = mydt.getminutes()

  9. ...

看别人的例子是给时间赋值后去比较,可以直接获得当前时间吗?
点赞  2016-9-28 18:52
引用: dcexpert 发表于 2016-9-28 12:19
前面两个提示你参数错误,需要用()。

最后一个参数形式是对的,但是缩进有问题:IndentationError: un ...
  1. >>> rtc.datetime()
  2. (2016, 9, 28, 4, 11, 10, 51, 27)

哈哈,没注意缩进
点赞  2016-9-28 19:10
引用: suoma 发表于 2016-9-28 18:52
看别人的例子是给时间赋值后去比较,可以直接获得当前时间吗?

DateTime()函数不带参数就是获取时间。
点赞  2016-9-28 21:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复