В Arduino зачем создавать преднамеренный бесконечный цикл?

В наброске примера таблицы ASCII есть преднамеренный бесконечный цикл:

  if (thisByte == 126) {    // you could also use if (thisByte == '~') {
// This loop loops forever and does nothing
while (true) {
  continue;
}

Какой смысл делать это в void main()? Почему бы просто не поместить все в void setup()? Это полезно для запуска функции один раз? Я думаю, что если бы его использовали в определенной функции, он бы застрял в бесконечном цикле...


person Adamelli    schedule 11.12.2020    source источник
comment
Они также могли окружить весь цикл if (thisByte <126) { /* loop here */ }.   -  person Rojo    schedule 15.12.2020


Ответы (1)


Бесконечный цикл заставляет Arduino прекращать что-либо делать в loop() при выполнении определенного условия. Это просто простой способ остановить цикл, когда он сделает то, что сделал. Для этого также подойдет перевод MCU в режим глубокого сна или отключения питания на неопределенный срок.

И да, в setup() можно было делать все, это всегда так. Любую программу Arduino можно переписать так, чтобы она делала все на setup().

Основная причина, по которой этого не нужно делать, заключается в том, что setup() предназначена для настройки, а loop() предназначена для зацикливания и запуска основной функциональности, по соглашению, и потому что в противном случае у этих двух функций были бы глупые имена.

Хотя каждый волен делать это по-своему.

person ocrdu    schedule 11.12.2020