开源硬件
Arduino
客制化键盘
Arduino_寄存器
二进制运算
寄存器+二进制运算
LCD-逐字显示
密码依次录入
等待输入
WiFi Duck(无线击键注入攻击平台)
WiFi Duc-New
WiFi Duc-Old
蓝牙无线烧录
ESP8266
ESP-NOW
ESP8266看门狗
ESP8266-休眠模式
ESP01/01S使用说明
WIFI_SD
ESP8266-Web服务器
ESP8266-WIFI自动认证
ESP32
ESP32 ADC2
ESP32_PWM
ESP32_CAM
ESP32 小坦克
ESP32_限电保护
Arduino IDE 添加 ESP32
ESP32-iPhone BLE攻击
STM32
STM32F103-虚拟键盘
STC
STC8G1K08(A)
树莓派-触摸屏
Arduino IDE
Arduino_自制库
Arduino库收集
常见排序算法
冒泡排序
选择排序
插入排序
希尔排序
归并排序
快速排序
计数排序
预处理
millis(运行时长)
Arduino IDE 2.X-修改数据位置
Mixly
Mixly安装教程
Mixly 模块介绍
Mixly-添加ESP32CAM支持
Mixly-库定制工具
模块
4G模块连接物联网
GPS模块
语音模块(JQ8900)
安信可VB语音识别
28BYJ-48(5V步进)
FreeRTOS
FreeRTOS-多任务基础
FreeRTOS-任务共享全局变量
FreeRTOS-多核多任务
FreeRTOS-MUTEX
FreeRTOS-常规程序改多任务
FreeRTOS-定时器
LaserGRBL(激光雕刻)
LaserGRBL-GRBL
GRBL-CNC Shield v4
MicroPython
Scratch
Wokwi(在线仿真)
html转无符号数组
待做开源项目
本文档使用 MrDoc 发布
-
+
首页
millis(运行时长)
就跟生命周期一样,开发板也有生命周期,当然重启复位都会重置这个周期 对于 Arduino uno 来说,它的生命周期大概是49天,超过这个时长就会溢出并自动重启 我们可以使用 `millis()` 这个函数来查看当前所生存时常 常见的 `delay()` 是假死等待到达指定时间,这个期间是不能执行任何任务,同时因为运行指令也是需要时间的,不能做到精准控制时间 `millis()` 就可以解决这些问题,不论执行什么内容,系统运行时间是一直在正常流动的,我们可以通过比较当前运行时间来精准按照时间执行任务 同时 Arduno 是不支持并行任务的,而 `millis()` 可以让我们来执行并行任务 - `millis()` 是系统运行时间(ms) - `micros()` 是系统运行时间(μs) 根据运行时间判定,运行过程中不会假死,意味着执行过程中还可以插入其他程序 ```c++ const byte pins[] = {2, 3, 4, 5, 6};; // 每过一天亮一盏灯 void onLED() { //unsigned long interval = 24 * 60 * 60 * 1000L; //1天 单位毫秒 unsigned long interval = 1000; for (byte pin : pins) { if (millis() >= pin * interval) digitalWrite(pin, HIGH); // 在运行过程中可以插入其他程序 } } ``` 并行任务 ```c++ // 结构体和数组 struct LED { byte pin; unsigned int interval; unsigned long previousMillis; }; // 创建对象,并设置参数 LED led2 = { 2, 2000, 0 }; LED led3 = { 3, 3000, 0 }; LED led4 = { 4, 4000, 0 }; LED led5 = { 5, 5000, 0 }; LED led6 = { 6, 6000, 0 }; LED leds[5] = {led2, led3, led4, led5, led6}; // 加入组 byte ledsLength = sizeof(leds)/sizeof(leds[0]); // 长度5个 void multitaskLED() { unsigned long currentMillis = millis(); //当前时间 for (byte i=0;i<ledsLength;i++) { if ((currentMillis - leds[i].previousMillis) >= leds[i].interval) { leds[i].previousMillis = currentMillis; digitalWrite(leds[i].pin,!digitalRead(leds[i].pin)); } } } ``` **相关内容视频** [生命里的49天](https://www.bilibili.com/video/BV1AS4y1a7se) [millis实战之多任务](https://www.bilibili.com/video/BV1VA4y1Q7XM)
造物者W
2022年6月7日 11:28
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码