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. Т.е. примерно соответствует просто бесконечному циклу, но еще обрабатываются события последовательного порта.