[아두이노] ESP32 main.cpp

아두이노는 초기화는 setup() 함수에서 처리는 loop() 함수에 정의 한다.


보통 C언어는 main() 함수가 엔트리 포인트 인데 아두이노는 main() 함수가 없어 ESP32에서 시작 위치를 찾아 보았다. ESP32 같은 경우 main.cpp에 관련을 찾아 볼수 있으며 아래 코드에 setup()과 loop() 함수 호출되고 있는 것을 알수 있다.


#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_task_wdt.h"
#include "Arduino.h"

TaskHandle_t loopTaskHandle = NULL;

#if CONFIG_AUTOSTART_ARDUINO

bool loopTaskWDTEnabled;

void loopTask(void *pvParameters)
{
    setup();
    for(;;) {
        if(loopTaskWDTEnabled){
            esp_task_wdt_reset();
        }
        loop();
        if (serialEventRunserialEventRun();
    }
}

extern "C" void app_main()
{
    loopTaskWDTEnabled = false;
    initArduino();
    xTaskCreateUniversal(loopTask"loopTask"8192NULL1, &loopTaskHandleCONFIG_ARDUINO_RUNNING_CORE);
}

#endif
 


ESP32에서는 기본 적으로 Free RTOS활용하여 제작 하였으며 멀티 코어 (CPU가 2개)여서 CPU0에서는 통신 관련 처리를 CPU1에서는 사용자 정의 로직을 처리 하도록 설계 되었다 한다.


0ef214de9ea4f6f9e1314f090a1fd8c6.jpg
 

|------------------------------------------------------------------|
| instruction               | meaning                              |
|------------------------------------------------------------------|
xTaskCreate()             | for single core tasks                |
xTaskCreatePinnedToCore() | for assigning tasks to specific core |
xTaskCreateUniversal()    | for making cores used evenly         |
|------------------------------------------------------------------|






1
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
98 마이크로비트 RGB LED 모듈 ( 센서 활용) icon HellMaker 08-22 18,501
97 마이크로비트 써미스터 온도 센서 (센서 활용) icon HellMaker 08-22 18,299
96 마이크로비트 수은 기울기 센서 (센서 활용) icon HellMaker 08-22 17,771
95 마이크로비트 마이크로 비트 기울기 센서 (센서 활용) icon HellMaker 08-22 18,730
94 마이크로비트 가속도 센서 (마이크로비트 기본 예제) icon 양재동메이커 08-22 18,264
93 마이크로비트 가속도 동서남북 (마이크로비트 기본 예제) icon 양재동메이커 08-22 17,213
92 마이크로비트 버튼 응용 예제 (마이크로비트 기본 예제) icon 양재동메이커 08-22 18,325
91 마이크로비트 버튼 예제 (마이크로비트 기본 예제) icon 양재동메이커 08-22 17,544
90 마이크로비트 매직 라이트 컵 모듈 (아두이노 센서 활용) icon HellMaker 08-14 17,031
89 마이크로비트 심박 센서 ( 아두이노 센서 활용) icon HellMaker 08-14 18,212
88 마이크로비트 충격 센서 (아두이노 센서 활용) icon HellMaker 08-08 19,800
87 마이크로비트 레이저 발광 모듈 (아두이노 센서 활용) icon HellMaker 08-08 18,483
86 마이크로비트 7 컬러 LED 모듈 (아두이노 센서 활용) icon HellMaker 08-08 17,496
85 마이크로비트 CDS 조도 센서 (아두이노 센서 활용) icon HellMaker 08-08 17,989
84 마이크로비트 매직라이트 컵 모듈 활용하기 (아두이노 센서 활용) icon HellMaker 08-08 25,260
83 마이크로비트 기울기 센서 활용 (아두이노 센서 활용) icon HellMaker 08-08 18,722
82 마이크로비트 노크 센서 활용 (아두이노 센서 활용) icon HellMaker 08-08 18,450
81 마이크로비트 수은 기울기 센서 활용 (아두이노 센서 활용) icon HellMaker 08-08 18,726
80 마이크로비트 써미스터 온도 센서 활용 (아두이노 센서 활용) icon HellMaker 08-08 18,707
79 마이크로비트 디지털 홀 센서 활용 (아두이노 센서 활용) icon HellMaker 08-08 21,410