极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 40633|回复: 9

最近在学习arduino 想请教前辈一个问题 millis()开机时间如何清零,有没有对应的.

[复制链接]
发表于 2014-4-15 00:42:03 | 显示全部楼层 |阅读模式
millis()该怎么清零有没有什么函数可以清掉的?如果可以的话我们开发一些东西就很好进行任务调度了
另外系统运行起来后如何软复位?
谢谢各位前辈了
回复

使用道具 举报

发表于 2014-4-15 03:24:38 | 显示全部楼层
millis()实际读取的是一个名为 timer0_overflow_count 的系统变量,用这两行可以清零:

extern volatile unsigned long timer0_overflow_count;
timer0_overflow_count = 0;

但是你这样做会破坏掉使用millis的arduino内部函数和库的运行,所以不建议这样做。
我估计你担心millis在49天后会溢出,其实可以使用一个记住时间差值的变量就可以了,你可以随便清零。

简单的软件复位方法是把reset引脚连到一个数字引脚,然后输出低电位就可以复位了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-15 12:31:13 来自手机 | 显示全部楼层
嗯,这样也行,听君一席话豁然开朗,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-15 12:35:59 来自手机 | 显示全部楼层
春泥蛋炒饭 发表于 2014-4-15 03:24
millis()实际读取的是一个名为 timer0_overflow_count 的系统变量,用这两行可以清零:

extern volatile ...

对了,有木有,指令让CPU软复位的指令,有的话就不用外接了,毕竟接io口去复位脚,总觉得有点不安全
回复 支持 反对

使用道具 举报

发表于 2014-4-15 13:08:01 | 显示全部楼层
春泥蛋炒饭 发表于 2014-4-15 03:24
millis()实际读取的是一个名为 timer0_overflow_count 的系统变量,用这两行可以清零:

extern volatile ...

这也算是一种方法
回复 支持 反对

使用道具 举报

发表于 2014-4-15 13:21:34 | 显示全部楼层
pliangpalm 发表于 2014-4-15 12:35
对了,有木有,指令让CPU软复位的指令,有的话就不用外接了,毕竟接io口去复位脚,总觉得有点不安全

如果你不喜欢接线,纯软件方法也有,不容易懂而已。

定义一个reset函数:
void(* resetFunc) (void) = 0;

需要复位时这样调用:
resetFunc();
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-15 18:14:03 | 显示全部楼层
春泥蛋炒饭 发表于 2014-4-15 13:21
如果你不喜欢接线,纯软件方法也有,不容易懂而已。

定义一个reset函数:

我试试哈!谢谢您
回复 支持 反对

使用道具 举报

发表于 2014-7-5 15:12:11 | 显示全部楼层
刚才试验了一下

extern volatile unsigned long timer0_overflow_count;
void (*zero)(void)=0;
void setup()
{
  Serial.begin(9600);
  delay(5000);
  Serial.print(millis());
}
void loop()
{

   delay(15000);
   Serial.print(millis());
   delay(10);
   zero();
  // pinMode(5,OUTPUT);
    //timer0_overflow_count = 0;

}
春泥蛋炒饭提到的IO口重启和程序指针归零都可以用,



extern volatile unsigned long timer0_overflow_count;
timer0_overflow_count = 0;这种方法不可用
我用的是1.0.5
谢谢春泥蛋炒饭
回复 支持 反对

使用道具 举报

发表于 2014-7-5 15:17:49 | 显示全部楼层
接上面
IO口复位会执行bootloader程序
而PC值归零不会执行bootloader    直接从零地址开始干活了
回复 支持 反对

使用道具 举报

发表于 2016-3-13 11:19:40 | 显示全部楼层
mark 一个,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 22:21 , Processed in 0.049458 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表