ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ESP-IDF .c .h 참조 cMakeLists (vscode)
    소프트웨어 2023. 3. 24. 22:02

    #esp32 윈도우 vscode 환경
    #선행(필수) ESP-IDF 윈도우 개발환경 세팅(VSCODE)
    #선행(필수) ESP-IDF 외부 폴더에서 예제 파일 실행(VSCODE)


    1) 같은 경로의 소스 파일 참조

    아래와 같이 /main 경로에 소스 코드가 main.c 하나만 있는 빈 예제 파일을 생성합니다.

    아래의 코드를 입력합니다.
    add() 함수로 더하기를 하고 app_main에서 출력을 하는 코드입니다.

    #include <stdio.h>
    
    int add(int a, int b);
    
    void app_main(void)
    {
        int result = add(3, 5);
        printf("result = %d\n", result);
    }
    
    
    int add(int a, int b)
    {
        return a+b;
    }

    단순한 코드여서 쉽게 읽히지만, 코드가 복잡해지만 가독성이 떨어지게 됩니다.
    코드를 여러 파일로 나누는 방법에 대해 설명 하겠습니다.
    아래와 같이 main.c와 같은 경로에 plus.c 파일을 만들어 줍니다.

    main.c 에는 아래 코드

    #include <stdio.h>
    
    int add(int a, int b);
    
    void app_main(void)
    {
        int result = add(3, 5);
        printf("result = %d\n", result);
    }

    add.c 에는 아래 코드로 분리 합니다.

    int add(int a, int b)
    {
        return a+b;
    }

     

    같은 경로의 CMakeLists.txt를 아래와 같이 수정해 줍니다.

    idf_component_register(SRCS
                        "main.c"
                        "plus.c" // 추가
                        INCLUDE_DIRS ""
                        )

     
    idf.py flash monitor -> 정상 작동 합니다.

     

    2)  헤더 파일 포함

    같은 /main 경로에 plus.h 파일을 추가해 줍니다.

    main.c 를 수정해 줍니다.

    #include <stdio.h>
    #include "plus.h"  // 헤더 파일 추가
    // int add(int a, int b); 함수 선언 삭제
    void app_main(void)
    {
        int result = add(3, 5);
        printf("result = %d\n", result);
    }

    plus.h 파일에 아래 입력 합니다.

    #ifndef plus_H  // 동명의 헤더 파일이 없다면 실행
    #define plus_H
    
    int add(int a, int b);
    
    #endif

     
    idf.py flash monitor -> 정상 작동 합니다.
     

    3) main폴더의 내부 폴더 참조

    /main에 plus 폴더를 만들고 plus.c 와 plus.h 파일을 이동합니다.

    /main/CmakeLists.txt 파일을 아래와 같이 수정해 줍니다.

    idf_component_register(SRCS
                        "main.c"
                        "plus/plus.c" // 경로 수정
                        INCLUDE_DIRS
                        "."
                        "plus"  // 폴더 경로 추가
                        )

    idf.py flash monitor -> 정상 작동 합니다.
     

    4) 같은 프로젝트 폴더 내의 폴더 참조

    *동일 프로젝트 폴더

    자주 사용 하는 코드를 불러와 부품 처럼 조립하여 사용 하는 방법입니다
    /main 외부에 /components 폴더를 만들고, plus 폴더를 /components 로 이동합니다.
    /plus에 CMakeLists.txt를 생성해 줍니다. 

    /main의 CMakeLists.txt 를 아래와 같이 수정해 줍니다.

    idf_component_register(SRCS
                        "main.c"
                        INCLUDE_DIRS
                        "."
                        )

    /plus의 CMakeLists.txt 를 아래와 같이 수정해 줍니다.

    idf_component_register(SRCS
                         "plus.c" 
                         INCLUDE_DIRS
                         "." 
                         )

     

    5) 소스 코드

     

     

    GitHub - pogop4321/Refer_Component

    Contribute to pogop4321/Refer_Component development by creating an account on GitHub.

    github.com

     
     

     

     

    *공부하는 입장에서 정리중인 자료들 입니다.


    ESP-IDF 윈도우 개발환경 세팅 (VSCODE)
    ESP-IDF 외부 폴더에서 예제 파일 실행 (VSCODE)
    ESP-IDF GPIO 인풋, 아웃풋 (VSCODE)
    ESP-IDF 인터럽트 (VSCODE)

    ESP-IDF 디바운싱 (esp32, vscode)
    ESP-IDF .c .h 참조 cMakeLists (vscode)

    ESP-IDF components 참조 cMakeLists (vscode)
    ESP-IDF LCD 출력(vscode)
    ESP-IDF 메모리 - Flash (vscode)
    ESP-IDF 메모리 - SRAM (vscode)
    ESP-IDF FreeRTOS - buffer (vscode)

    ESP-IDF 쿨링팬 FG센서, PWM제어(vscode)

     



    <포스트 예정>

    *ESP-IDF 메모리 - ROM
    *LCD - 메뉴 만들고 버튼으로 메뉴 이동(터미널로 작업)
    *LCD - 2차원 배열로 메뉴 진입, 뒤로가기(터미널로 작업)
    *LCD - 메뉴 만든 것 LCD 출력
    *LCD - 메뉴 UI 제작.  연두색 블럭은 메인 메뉴 회색 블럭은 서브 메뉴
            (1.팬  1-1.ON  1-2.OFF  1-3.BACK   2.LED  2-1.밝기 약  2-2.밝기 중  2-3.밝기 강   2-4.BACK   3.빛 밝기 출력 lux(+PPFD 변환)
    *Easy EDA툴 활용하여 커스텀 ESP32 보드 제작
    *LCD - LCD , 팬 , 펌프 ,  ESP32 연결 가능한 PCB 제작 주문.
    *LCD - 간이 스마트팜 제작
    *ESP32 JTAG 디버그
    *FreeRTOS
    *FreeRTOS - QUEUE
    *FreeRTOS - timer
    *FreeRTOS - Semaphore , mutex
    *FreeRTOS - event group , notification
    *ESP-IDF I2C SPI UART
    *ESP-IDF wifi
    *ESP-IDF MQTT
    *ESP-IDF Server (XAMPP 로컬 서버 연결)

    *DIY 컨테이너 / 유리온실 스마트팜 제작

     

     

     
     

    '소프트웨어' 카테고리의 다른 글

    ESP-IDF LCD 예제(vscode)  (0) 2023.03.25
    ESP-IDF components 참조 cMakeLists (vscode)  (0) 2023.03.25
    ESP-IDF 디바운싱 (vscode)  (0) 2023.03.23
    ESP-IDF 인터럽트 (vscode)  (0) 2023.03.18
    ESP-IDF GPIO 인풋, 아웃풋 (vscode)  (0) 2023.03.17
Designed by PixelSpace