笔记文件
用习惯了keil和iar之类的开发软件,一下子转换到ESP32是特别的不习惯,这里使用的开发环境是乐鑫官方推出的Espressif-IDE,也是刚学折腾ESP32,刚开始就遇到难题了,按照以往的习惯,一般开发大一点的项目工程都是需要将不同的功能分开不同的文件写,一般都不会全写在main文件里。
这里主要就是记录一下Espressif-IDE添加外部文件的过程
可能这个过程中也是有错误的地方。具体我也是网上找了很久的方法,最后自己总结一下。主要自己做为笔记记录,具体原理呢,我也是一知半解,我也没有具体去学习CMake,我也是照葫芦画瓢,能用!
这里通过一个案例来说明整个操作流程,
设计一个程序,分别包含myGPIO和myLED两个文件夹,的程序
myGPIO文件夹包含:myGPIO.c myGPIO.h 用于初始化 IO
myLED文件夹包含: myLED.c myLED.h 用于闪烁LED程序
这里以官方给出的 hello_world 工程为模板添加自己写的文件,




myGPIO.c文件
- #include "myGPIO.h"
- #include "myLED.h"
-
- void myGPIO_Init(void )
- {
- gpio_set_direction(GPIO_NUM_1,GPIO_MODE_OUTPUT);
- }
myGPIO.文件
- #ifndef MYDRIVES_MYGPIO_MYGPIO_H_
- #define MYDRIVES_MYGPIO_MYGPIO_H_
-
- void myGPIO_Init(void );
-
- #endif /* MYDRIVES_MYGPIO_MYGPIO_H_ */

myLED.c
- #include "myLED.h"
- #include "myGPIO.h"
-
- void myLED_Init(void )
- {
- myGPIO_Init();
- }
- void myLED_Function(void )
- {
- myLED_H;
- printf("myLED_H\n");
- vTaskDelay(500);
- myLED_L;
- printf("myLED_L\n");
- vTaskDelay(500);
- }
myLED.h
- #ifndef MYDRIVES_MYLED_MYLED_H_
- #define MYDRIVES_MYLED_MYLED_H_
-
- #include "freertos/FreeRTOS.h"
- #include "freertos/task.h"
- #include "driver/gpio.h"
-
- #define myLED_H gpio_set_level(GPIO_NUM_1,1)
- #define myLED_L gpio_set_level(GPIO_NUM_1,0)
-
- void myLED_Init(void );
- void myLED_Function(void );
-
- #endif /* MYDRIVES_MYLED_MYLED_H_ */
- #include <stdio.h>
- #include "sdkconfig.h"
- #include "freertos/FreeRTOS.h"
- #include "freertos/task.h"
- #include "esp_system.h"
- #include "esp_spi_flash.h"
- #include "myGPIO.h"
- #include "myLED.h"
-
- void app_main(void)
- {
- printf("Hello world!\n");
- myLED_Init();
-
- while(1)
- {
- myLED_Function();
-
- }
- }
这里只修改 main 文件夹下的CMakeLists.txt文件

- set(src
- "hello_world_main.c"
- ../myDrives/myGPIO/myGPIO.c
- ../myDrives/myLED/myLED.c
-
- )
-
- set(inc
- "."
- ../myDrives/myGPIO
- ../myDrives/myLED
- )
-
-
- idf_component_register(
- SRCS ${src}
- INCLUDE_DIRS ${inc})


