void loop() или int main() в arduino

При создании больших проектов с кодом, разделенным на разные файлы, я задался вопросом: Является ли int main(){while(1){//код} } полной заменой void loop(){//код} для микроконтроллеров на таких камнях, как atmega и esp, может есть какие-то подводные камни? И что тогда является заменой void setup(){}?


Ответы (1 шт):

Автор решения: insolor

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

→ Ссылка