编程环境:ESP-IDF+VS Code
文件结构:
components/Inc/test.h
components/Src/test.c
components/CMakeLists.txt
(1) 项目根目录创建自定库的文件夹:components,可自定义
(2) 创建放置头文件的文件夹:components/Inc,可自定义
创建头文件,如:components/Inc/test.h
输入以下代码并保存:
#ifndef __TEST_H__
#define __TEST_H__
#include "esp_log.h"
void fun_test(void);
#endif
(3) 创建放置源文件的文件夹:components/Src,可自定义
创建头文件,如:components/Src/test.c,输入以下代码并保存:
#include "test.h"
static const char *TAG = "test";
void fun_test(void)
{
ESP_LOGI(TAG, "success!");
}
(4) 创建文件:components/CMakeLists.txt,不可自定义
用于定义头文件与源文件的路径,输入以下代码并保存:
set(Srcs "Src/test.c") #将所有源文件定义为srcs,多个:set(Srcs "Src/test1.c" "Src/test2.c")
set(Incs "Inc") #将所有头文件上级文件夹定义为Incs,多个:set(Incs "Inc1" "Inc2")
idf_component_register(SRCS "${Srcs}" INCLUDE_DIRS "${Incs}")
(5) 主函数调用自定义库函数
#include "test.h"
void app_main(void)
{
fun_test();
}
输出结果如下:
I (241) cpu_start: ESP-IDF: v4.4.2-dirty
I (247) heap_init: Initializing. RAM available for dynamic allocation:
I (254) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (260) heap_init: At 3FFB2C30 len 0002D3D0 (180 KiB): DRAM
I (266) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (272) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (279) heap_init: At 4008B2C4 len 00014D3C (83 KiB): IRAM
I (286) spi_flash: detected chip: generic
I (290) spi_flash: flash io: dio
I (295) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (305) test: success!