0x00:前言
笔记文件
用习惯了keil和iar之类的开发软件,一下子转换到ESP32是特别的不习惯,这里使用的开发环境是乐鑫官方推出的Espressif-IDE,也是刚学折腾ESP32,刚开始就遇到难题了,按照以往的习惯,一般开发大一点的项目工程都是需要将不同的功能分开不同的文件写,一般都不会全写在main文件里。
这里主要就是记录一下Espressif-IDE添加外部文件的过程
可能这个过程中也是有错误的地方。具体我也是网上找了很久的方法,最后自己总结一下。主要自己做为笔记记录,具体原理呢,我也是一知半解,我也没有具体去学习CMake,我也是照葫芦画瓢,能用!
这里通过一个案例来说明整个操作流程,
设计一个程序,分别包含myGPIO和myLED两个文件夹,的程序
myGPIO文件夹包含:myGPIO.c myGPIO.h 用于初始化 IO
myLED文件夹包含: myLED.c myLED.h 用于闪烁LED程序
0x01:向工程添加文件
这里以官方给出的 hello_world 工程为模板添加自己写的文件,
1、新建myDrives
2、myDrives 文件夹下添加 myGPIO文件夹和 myLED文件夹
3、myGPIO
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_ */
4、myGPIO
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_ */
4、main 主函数修改
#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();
}
}
0x02:修改CMakeLists.txt文件
这里只修改 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})
0x03:编译运行
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)