void loop() или int main() в arduino
При создании больших проектов с кодом, разделенным на разные файлы, я задался вопросом:
Является ли int main(){while(1){//код} }
полной заменой void loop(){//код}
для микроконтроллеров на таких камнях, как atmega и esp, может есть какие-то подводные камни? И что тогда является заменой void setup(){}
?
Ответы (1 шт):
В программах для Arduino точно так же есть функция main
, но она лежит в стандартной библиотеке, а пользователь просто реализует setup
и loop
, которые из main
вызываются.
См. исходник файла main.cpp
библиотеки Arduino:
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
Вот вызов setup
, вот бесконечный цикл с вызовом loop
. Т.е. примерно соответствует просто бесконечному циклу, но еще обрабатываются события последовательного порта.