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

임베디드 보드

번호 제목 글쓴이 날짜 조회수
118 아두이노 ESP32 Analog Inputs (ADC) +4 icon 양재동메이커 02-12 11,894
117 아두이노 TIP : Serial의 Port가 Open 시점 확인 icon 양재동메이커 01-21 9,053
116 아두이노 ESP32 Boot Mode icon 양재동메이커 12-28 8,586
115 아두이노 아두이노 에러 리스트(Arduino Error list) icon 양재동메이커 11-24 13,205
114 아두이노 ESP32 main.cpp +1 icon 양재동메이커 11-19 9,190
113 아두이노 ESP32 EEPROM 와 IR Remote icon 양재동메이커 08-06 9,261
112 아두이노 Learn ESP32 icon 양재동메이커 06-25 8,763
111 라즈베리 파이 라즈베리 파이 (Raspberry Pi) 기초 icon 양재동메이커 06-19 9,687
110 라즈베리 파이 (동영상 강의) 라즈베리 파이 강좌 Link icon 양재동메이커 06-17 9,195
109 STM32 / MBED [MED] Switch debouncing icon HellMaker 12-30 10,803
108 기타 [타이젠] 아두이노의 16x2 LCD Display라이브러리 LiquidCrystal_I2C의 타이젠 포팅 icon 양재동메이커 09-15 10,717
107 기타 [타이젠] GPIO의 디지탈 출력과 입력 인터럽트의 C++ Class 제작 icon 양재동메이커 09-12 10,230
106 마이크로비트 서보 모터 icon HellMaker 09-03 9,818
105 마이크로비트 아날로그 온도센서 (마이크로 비트 센서 활용) icon HellMaker 09-01 10,646
104 마이크로비트 터치센서 (마이크로 비트 센서 활용) icon HellMaker 09-01 9,929
103 마이크로비트 디지털 홀 센서 (마이크로 비트 센서 활용) icon HellMaker 08-29 9,007
102 마이크로비트 리니어 홀 센서 (마이크로 비트 센서 활용) icon HellMaker 08-29 8,650
101 마이크로비트 불꽃 감지 센서 (마이크로 비트 센서 활용) icon HellMaker 08-26 8,958
100 마이크로비트 로터리 엔코더 (마이크로 비트 센서 활용) icon HellMaker 08-25 9,037
99 마이크로비트 2컬러 LED(3mm) (센서 활용) icon HellMaker 08-22 9,045