esp32的idf开发框架的目录结构

1、创建工程mytest,生成如下的目录结构。

idf.py create-project mytest

2、在mytest.c中添加如下代码,该代码功能是控制GPIO_2引脚上的LED闪烁

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/ledc.h"

#define LEDC_TIMER              LEDC_TIMER_0
#define LEDC_MODE               LEDC_HIGH_SPEED_MODE
#define LEDC_OUTPUT_IO          (2) // 定义输出的GPIO引脚
#define LEDC_CHANNEL            LEDC_CHANNEL_0
#define LEDC_DUTY_RES           LEDC_TIMER_13_BIT // 将占空比分辨率设置为13位
#define LEDC_DUTY               (2000) // 将占空比设置为50%。((2 ** 13) - 1) * 50% = 4095
#define LEDC_FREQUENCY          (5000) // 频率设置为5 kHz

void app_main()
{
    // 初始化 LED 控制器
    ledc_timer_config_t ledc_timer = {
        .duty_resolution = LEDC_DUTY_RES,
        .freq_hz = LEDC_FREQUENCY,
        .speed_mode = LEDC_MODE,
        .timer_num = LEDC_TIMER
    };
    ledc_timer_config(&ledc_timer);

    ledc_channel_config_t ledc_channel = {
        .channel    = LEDC_CHANNEL,
        .duty       = 0,
        .gpio_num   = LEDC_OUTPUT_IO,
        .speed_mode = LEDC_MODE,
        .timer_sel  = LEDC_TIMER
    };
    ledc_channel_config(&ledc_channel);

    while (1) {
        // 逐渐增加LED的亮度
        for (int i = 0; i <= LEDC_DUTY; i += 100) {
            ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, i); // 设置LED的占空比
            ledc_update_duty(LEDC_MODE, LEDC_CHANNEL); // 更新LED的占空比
            vTaskDelay(pdMS_TO_TICKS(10)); // 延迟10毫秒
        }

        // 逐渐减小LED的亮度
        for (int i = LEDC_DUTY; i >= 0; i -= 100) {
            ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, i); // 设置LED的占空比
            ledc_update_duty(LEDC_MODE, LEDC_CHANNEL); // 更新LED的占空比
            vTaskDelay(pdMS_TO_TICKS(10)); // 延迟10毫秒
        }
    }
} 

3、编译

idf.py build

4、烧写

idf.py -p COM3 flash

5、效果:蓝色的LED闪烁。

什么是idf.py menuconfig 。

我们调用idf.py menuconfig为了生成sdkconfig.h文件参与编译。当输入这条命令,那么就会生成sdkconfig文件,这里保存了你要编译的宏的内容 。

如果在idf.py build之前没有配置idf.py menuconfig则会使用默认的配置生成sdkconfig文件。

上个例子中,IO管脚是2,我想改成5,那么我需要修改代码,但是有没有一种图形化的方式呢?答案就是idf.py menuconfig 

实现方法:

1)在工程D:\vscodeworldspace\mytest\main目录下新建一个文件名字“Kconfig.probuild” 

粘贴下面的代码到“Kconfig.projbuild”文件里,这里是设置一个配置值默认为5 

menu "My menu"

	# int 是输入整数
    config LEDC_MY_IO
        int "int_test"
        default 5
        help
            This is an gpio pin.

endmenu

2)然后把mytest.c中那行代码修改为如下形式,是为了使用生成的sdkconfig配置文件动态修改引脚。

#define LEDC_OUTPUT_IO          CONFIG_LEDC_MY_IO // Define the output GPIO

宏定义的名字是CONFIG_ + 配置名(config后边的)

菜单里面是“LEDC_MY_IO”,所以“CONFIG_LEDC_MY_IO” 

3)运行idf.py menuconfig

按方向键“下”选择这个菜单“回车”进入,然后把“5”修改成“2”,“回车”

保存退出后,自动生成的sdkconfig文件中有如下内容

4)输入“idf.py build”

5)输入“idf.py -p COM4 flash”

现象跟上面的一样,2号引脚蓝色LED闪烁 。

menuconfig语法参考 

menu "My menu"

	# bool 是勾选框
    config MY_TEST_BOOL
        bool "bool_test"
        help
            This is a bool test.

	# int 是输入整数
    config MY_TEST_INT
        int "int_test"
        default 12345
        help
            This is an int test.

	# hex 是输入16进制数
    config MY_TEST_HEX
        hex "hex_test"
        default 0x7FFF
        help
            This is a hex test.

	# tristate 在 ESP-IDF构建系统中会被当做 bool 处理
    config MY_TEST_TRISTATE
        tristate "tristate_test"
        help
            This is a tristate test.

	# string 表示一个字符串
    config MY_TEST_STRING
        string "string_test"
        help
            This is a string test.

endmenu 

参考:4 ESP-IDF 创建自己的menuconfig - 哔哩哔哩

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋上钢琴的虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值