[아두이노] 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
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
78 마이크로비트 아날로그 홀 센서 활용 (아두이노 센서 활용) icon HellMaker 08-08 19,445
77 마이크로비트 마이크로비트로 가위바위보 게임 일산메이커 08-01 18,724
76 마이크로비트 마이크로 비트로 led 문자 출력하기 2 #microbit #마이크로비트 #led Wavy 07-31 18,338
75 마이크로비트 마이크로비트 - led로 문자출력하기 #마이크로비트 #led #문자 #microbit +1 Wavy 07-30 17,975
74 마이크로비트 마이크로 비트로 간단하게 led켜기 (microbit easy led) #microbit #LED #led Wavy 07-24 18,483
73 마이크로비트 마이크로비트 교육자료 - 반응속도 게임 +1 일산메이커 07-19 20,169
72 아두이노 C 언어 비교문에서 == 사용 방법 icon 양재동메이커 04-12 20,862
71 아두이노 [아두이노 실습] 푸쉬버튼 long press, short press 판단하기 icon 양재동메이커 03-27 21,267
70 아두이노 [아두이노 실습] Push button 스위치로 FND 카운트 증가/감소 icon 양재동메이커 03-27 25,825
69 아두이노 Blynk를 사용해 아두이노에서 IoT 맛보기 icon 양재동메이커 03-27 22,561
68 아두이노 아두이노에서 u8glib로 0.96" OLED 사용하기 icon 양재동메이커 03-27 22,288
67 아두이노 아두이노에서 여러개의 스위치를 1개의 analog input핀으로 검사하기 icon 양재동메이커 03-27 20,989
66 아두이노 아두이노에서 RTOS 사용하기 (FreeRTOS in Arduino) icon 양재동메이커 03-27 25,118
65 아두이노 아두이노에서의 delay() 함수 icon 양재동메이커 03-27 19,626
64 아두이노 아두이노의 pinMode()에서 INPUT과 INPUT_PULLUP의 차이 icon 양재동메이커 03-27 21,952
63 아두이노 아두이노등의 임베디드 시스템의 변수 값 오버플로우 문제 icon 양재동메이커 03-27 19,494
62 아두이노 아두이노에서 외부 라이브러리 설치하기 (Install library in arduino) icon 양재동메이커 03-27 21,423
61 아두이노 WS2812 color LED 사용하기 icon 양재동메이커 03-27 19,918
60 아두이노 WS2812와 APA102의 차이 비교 (Comparison between WS2812 and APA102) icon 양재동메이커 03-27 23,067
59 아두이노 [강좌] 51. 와이파이 통신 (5) - WebServer 예제 (2) icon 양재동메이커 03-21 19,456