极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15756|回复: 5

OCROBOT入门教程021--显示程序运行了多久

[复制链接]
发表于 2014-4-25 16:18:03 | 显示全部楼层 |阅读模式
本帖最后由 弘毅 于 2014-5-28 12:05 编辑

这节课我们介绍一下两个函数millis()与micros(),这两个函数用于显示OCROBOT控制板从开始运行到当前的时间。
硬件部分没有外围电路,我们只需要USB连接好电脑就可以。



millis()
描述
返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。
参数

返回
返回从运行当前程序开始的毫秒数(无符号长整数)。
提示
注意,参数 millis 是一个无符号长整数,试图和其他数据类型(如整型数)做数学运算可能会产生错误。
当中断函数发生时,millis()的数值将不会继续变化。


我们把下面的代码下载进入控制板。

  1. unsigned long time;

  2. void setup(){
  3.      Serial.begin(9600);
  4. }
  5. void loop(){
  6. Serial.print("Time:");
  7. time = millis();
  8. //打印从程序开始到现在的时间
  9. Serial.println(time);
  10. //等待一秒钟,以免发送大量的数据
  11.      delay(1000);
  12. }
复制代码





micros()
描述
返回 OCROBOT 开发板从运行当前程序开始的微秒数。这个数字将在约70分钟后溢出(归零)。在 16MHz 的 OCROBOT 开发板上(比如 MANGO 和 Nano),这个函数的分辨率为四微秒(即返回值总是四的倍数)。在 8MHz 的 OCROBOT产品上(比如 EASY),这个函数的分辨率为八微秒。
注意:每毫秒是1,000微秒,每秒是1,000,000微秒。
参数

返回
返回从运行当前程序开始的微秒数(无符号长整数)。

  1. unsigned long time;

  2. void setup(){
  3.      Serial.begin(9600);
  4. }
  5. void loop(){
  6. Serial.print("Time:");
  7. time = micros();
  8. //打印从程序开始的时间
  9. Serial.println(time);
  10. //等待一秒钟,以免发送大量的数据
  11.      delay(1000);
  12. }
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-12-8 13:46:43 | 显示全部楼层
返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。

那我要设置几分钟后归零 该怎么改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-9 20:58:32 | 显示全部楼层
gthrtg 发表于 2015-12-8 13:46
返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。

那我要设置几分钟后 ...

自己定义一个变量,变量不停计数,数字到了清零。通过控制变量阀值来控制几分钟。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-9 20:58:35 | 显示全部楼层
gthrtg 发表于 2015-12-8 13:46
返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。

那我要设置几分钟后 ...

自己定义一个变量,变量不停计数,数字到了清零。通过控制变量阀值来控制几分钟。
回复 支持 反对

使用道具 举报

发表于 2015-12-9 21:16:43 | 显示全部楼层
弘毅 发表于 2015-12-9 20:58
自己定义一个变量,变量不停计数,数字到了清零。通过控制变量阀值来控制几分钟。

意思明白 怎么写却找不到头绪 求给个例子。
回复 支持 反对

使用道具 举报

发表于 2015-12-18 15:59:31 | 显示全部楼层
本帖最后由 迷你强 于 2015-12-19 10:07 编辑
gthrtg 发表于 2015-12-9 21:16
意思明白 怎么写却找不到头绪 求给个例子。

  1. #define KEY A0
  2. long randNumber;
  3. int KEY_NUM = 0;
  4. int i=0;
  5. int x=1;
  6. unsigned long time;
  7. int interval = 1000;

  8. void setup(){
  9.   Serial.begin(9600);
  10.   randomSeed(analogRead(A0));
  11.   pinMode(KEY,INPUT_PULLUP);
  12. }

  13. void loop()
  14. {
  15.    if(digitalRead(A0)==0){
  16.    i=1;}
  17.   if(i == 1){
  18.   unsigned long startMillis = millis();
  19.   for(time = millis();startMillis + interval > time;)
  20.   {time=millis();}
  21.   Serial.println(x);
  22.   x++;
  23.   randNumber = random(600);
  24.   Serial.println(randNumber);
  25.   
  26.   if(x==11){
  27.     i=0;}
  28.   if(x>10){
  29.     x=1;}
  30.   
  31. }
  32. }

复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 02:56 , Processed in 0.043326 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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