Vscode ESP-IDF添加自己.C和.H文件方法

本文详细介绍了使用ESP-IDF框架从零开始创建项目的步骤。包括新建工程、编写C/C++源文件、配置CMakeLists.txt文件等内容,并演示了如何通过简单的示例程序实现输出Hello World。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

d我们在做自己工程的时候毕竟需要自己去创建.c和.h文件,但第一次用esp-idf,要写一点点cmake,其他和用keil之类的基本一样。下面直接开始。

准备工作 创建一个新工程 在esp-idf页面按ctrl + shift + p   输入: ESP-IDF:Welcome

 点击 show example

 点击 Use current 。。。。。

 按下图点击

 自己选择位置创建,就不截图了。

第一步 点击New File 创建两个新文件 命名test1.c和test1.h 

 

 创建之后目录结构就是这样

 第二步 复制黏贴以下代码到test1.c

#include <stdio.h>
#include "test1.h"

void test_hello_world(int count)
{
    printf("Hello world! %d \n", ++count);
}

 第三步 复制黏贴以下代码到test1.h

#ifndef _TEST1_H
#define _TEST1_H

void test_hello_world(int count);

#endif

第四步 复制以下代码到main.c

#include <stdio.h>
#include "test1.h"

void app_main(void)
{
    int count = 0;
    test_hello_world(count);
}

第五步  修改CMakeLists.txt

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

第六步 编译、烧录、打开监视器

 第七步 查看结果

 输出 Hello world! 1 则为正常

可以按ctrl + 】推出监视器。

这样就完全OK了,下面介绍创建文件夹中的工程

第一步 在刚才的基础上创建新的文件夹和文件,目录如下图、

 第二步 把刚才的函数稍微改一点

test1.c改成这样

#include <stdio.h>
#include "test1.h"

void test1_hello_world(int *count)
{
    printf("Hello world! %d \n", ++(*count));
}

test1.h

#ifndef _TEST1_H
#define _TEST1_H

void test1_hello_world(int *count);

#endif

test2.c

#include <stdio.h>
#include "test2.h"

void test2_hello_world(int *count)
{
    printf("Hello world! %d \n", ++(*count));
}

test2.h

#ifndef _TEST2_H
#define _TEST2_H

void test2_hello_world(int *count);

#endif

main.c

#include <stdio.h>
#include "test1.h"
#include "test2.h"

void app_main(void)
{
    int count = 0;

    test1_hello_world(&count);
    test2_hello_world(&count);
}

第三步 修改CMakeLists.txt

idf_component_register(SRCS "main.c" "test1.c" "./test/test2.c"
                    INCLUDE_DIRS "." "./test")

第四步 编译、下载、打开监视器 和上面一样

结果如下

 OK 结束!

 22/7/4更新  这种方法简单粗暴无论idf4.4还是5.0都可以用,但是还是推荐大家用components的方法去搭建整个工程。工程写到后面肯定越来越大,不能一直往那个CMakeLists.txt里塞一堆文件名吧。具体方法idf4.4和5.0有区别,可以看一下官方文档,暂时懒得写了。Migrate Build System to ESP-IDF 5.0 - ESP32 - — ESP-IDF Programming Guide latest documentation (espressif.com)

### 配置 VSCode 支持 ESP-IDF 开发 OLED 显示屏 #### 安装必要的工具链扩展 为了在 VSCode 中配置 ESP-IDF 并支持 OLED 显示屏开发,需安装特定的工具链以及 Visual Studio Code 扩展。 确保已按照官方指南完成基本的 ESP-IDF 工具链安装[^1]。接着,在 VSCode 内部通过 Extensions 市场搜索并安装 "ESP-IDF Extension Pack" 或者单独安装 `espressif.esp-idf` 插件来增强 IDE 功能。 #### 创建新项目 启动命令面板 (Ctrl+Shift+P),输入 `IDF: Create Project` 来新建一个项目。选择合适的模板作为起点;对于 OLED 屏幕应用来说,“hello_world”或其他基础示例可能是不错的选择。 #### 添加外部库文件 针对 SSD1306 这样的 OLED 控制器芯片,推荐使用成熟的第三方驱动程序简化编程工作量。可以从 GitHub 上获取经过验证的支持库,比如 nopnop2002 提供的 esp-idf-ssd1306 库[^3]: ```bash cd ~/esp/your_project/components/ git clone https://github.com/nopnop2002/esp-ssd1306.git ssd1306 ``` 这会将所需的组件克隆到项目的 components 文件夹下以便集成进工程之中。 #### 修改 main.c 实现简单测试案例 编辑源码以初始化 I2C 总线并与连接至该总线上的 OLED 设备通信。下面给出了一段简单的 C 代码片段用于点亮屏幕并打印字符串消息: ```c #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/i2c.h" #include "ssd1306.h" #define SDA_PIN GPIO_NUM_21 // 更改为实际使用的SDA引脚编号 #define SCL_PIN GPIO_NUM_22 // 更改为实际使用的SCL引脚编号 void app_main(void){ i2c_config_t conf = { .mode = I2C_MODE_MASTER, .sda_io_num = SDA_PIN, .scl_io_num = SCL_PIN, .master.clk_speed = 400000, /* 设置I2C频率 */ }; i2c_param_config(I2C_NUM_0,&conf); i2c_driver_install(I2C_NUM_0,I2C_MODE_MASTER,0,0,0); ssd1306_init(); while(true){ ssd1306_clear_screen(); ssd1306_draw_string(0,0,"Hello World!"); vTaskDelay(pdMS_TO_TICKS(1000)); } } ``` 上述代码实现了对 I2C 接口的基本配置,并调用了来自 ssd1306 组件的相关 API 函数完成了文字输出操作[^2]。 #### 编译上传固件 利用快捷键 Ctrl+B 可触发构建过程,编译完成后可通过 `IDF: Flash` 将二进制映像烧录到目标板卡上运行调试。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值