Функция yield() определена в библиотеке Arduino и вызывается автоматически по прерываниям из (во время работы) функции delay()
fghhft
unsigned int n = 0;
unsigned long k = 0;
void setup() {
Serial.begin(9600);
while (!Serial) {
}
}
void loop() {
n++;
Serial.print(n);
Serial.print(' ');
k = 0;
delay(1000);
Serial.println(k);
}
void yield(){
k++;
}
Лист. 1.
3 202956
4 202956
5 202956
6 202956
Вывод 1.
Другие функции задержки не используют прерывания и не вызывают функцию yield()
unsigned int n = 0;
unsigned long k = 0;
void setup() {
Serial.begin(9600);
while (!Serial) {
}
}
void loop() {
noInterrupts();
n++;
Serial.print(n);
Serial.print(' ');
k = 0;
_delay_ms(1000);
Serial.println(k);
}
void yield(){
k++;
}
Лист. 2.
152 0
153 0
154 0
155 0
156 0
Вывод 2.