1、用Arduino millis() 函数 实现一定程度上的多任务系统,可以设置不同时间的任务周期去执行对应的程序。比如需要10毫秒执行一次的程序、100毫秒执行一次的程序、1秒执行一次的程序。
2、Delay(ms)是延时函数,使用该延时函数,后面的程序将会暂停执行
millis() 多任务,代码
const long _100msTime = 100; // 100 milli seconds
unsigned long _100msLastTime;
const long _1000msTime = 1000; // 1000 milli seconds
unsigned long _1000msLastTime;
long a=0;
long b=0;
int count=0;
void setup() {
// 打开串口
Serial.begin(9600);
while (!Serial)
{
; //等待串口连接。仅本机USB口使用。
}
Serial.println("Serial is opened.");
}
void loop() {
// put your main code here, to run repeatedly:
TimeProc();
}
void TimeProc()
{
//1000ms执行一次
if ((millis() - _1000msLastTime) >= _1000msTime)
{
_1000msLastTime = millis( );
//
Serial.print("Counts a is: ");
Serial.print(a);
Serial.println(";");
Serial.print("Counts b is: ");
Serial.print(b);
Serial.println(";");
b++;
}
//100ms执行一次
if ((millis() - _100msLastTime) >= _100msTime)
{
_100msLastTime = millis( );
a++;
/*
//
if(count>10)
{
count=0;
a++;
}
count++;
*/
}
}
串口检测
3、测试控制器从开机到程序运行花费时间
代码:
const long _100msTime = 100; // 100 milli seconds
unsigned long _100msLastTime;
const long _1000msTime = 1000; // 1000 milli seconds
unsigned long _1000msLastTime;
long a=0;
long b=0;
int count=0;
unsigned long startTime; // 用于记录开始时间
unsigned long endTime; // 用于记录结束时间
void startTimer()
{
startTime = millis(); // 记录开始时间
}
void stopTimer()
{
endTime = millis(); // 记录结束时间
}
unsigned long getElapsedTime()
{
return endTime - startTime; // 返回经过的毫秒数
}
void setup()
{
startTimer();
// 打开串口
Serial.begin(9600);
while (!Serial)
{
; //等待串口连接。仅本机USB口使用。
}
Serial.println("Serial is opened.");
}
void loop() {
// put your main code here, to run repeatedly:
stopTimer();
unsigned long elapsed = getElapsedTime(); // 获取经过的时间
Serial.print("StartTime is: ");
Serial.print(elapsed);
Serial.println(";");
delay(2000);
TimeProc();
}
void TimeProc()
{
//1000ms执行一次
if ((millis() - _1000msLastTime) >= _1000msTime)
{
_1000msLastTime = millis( );
//
Serial.print("Counts a is: ");
Serial.print(a);
Serial.println(";");
Serial.print("Counts b is: ");
Serial.print(b);
Serial.println(";");
b++;
}
//100ms执行一次
if ((millis() - _100msLastTime) >= _100msTime)
{
_100msLastTime = millis( );
a++;
/*
//
if(count>10)
{
count=0;
a++;
}
count++;
*/
}
}
串口检测