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

#arduino #arduino-c

#arduino #arduino-c

Вопрос:

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

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

Какой смысл делать это в void main() ? Почему бы просто не вставить все void setup() ?

Полезно ли это для запуска функции один раз? Я думаю, что если бы он использовался в определенной функции, он застрял бы в бесконечном цикле.

Комментарии:

1. Они могли бы также окружить весь цикл if (thisByte <126) { /* loop here */ } .

Ответ №1:

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

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

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

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