我有一个无限循环函数:
void lancementCycleSecond(void *idCycleSecond) {
const int i = *(int *)idCycleSecond;
float relance = RelaisCycle[i].timeOn + RelaisCycle[i].timeOff;
Serial.println(F(" "));
Serial.print(F(" Action on "));
Serial.print(RelaisCycle[i].nom);
Serial.println(F(" "));
RelaisCycle[i].idTimer= t.pulseImmediate(RelaisCycle[i].pin, RelaisCycle[i].timeOn, LOW);
cycles[i].idTimer1 = t.after(relance, lancementCycleSecond,(void *)&i);
RelaisCycle[i].onOff;
}
我认为这一行是问题,因为所有工作都是第一次
t.after(relance, lancementCycleSecond,(void *)&i);
对于第一次i =3
,但是第二次(在循环中)i= -6092
。
我认为我在(void *)&i
犯了一个错误。我也只测试&i
这里是after();
的文档描述
在一段时间后运行一次回调函数。
语法
t.after(期间,回调,背景);
参数
期间:在运行回调函数之前等待多长时间 毫秒(unsigned long)回调:回调的名称 定时器事件触发时调用的函数(函数指针) context:要传递给回调函数的上下文值(void 指针)
返回
Timer事件的ID(int8_t或char)
感谢您的帮助。