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 kHzvoid 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_IOint "int_test"default 5helpThis 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_BOOLbool "bool_test"helpThis is a bool test.# int 是输入整数config MY_TEST_INTint "int_test"default 12345helpThis is an int test.# hex 是输入16进制数config MY_TEST_HEXhex "hex_test"default 0x7FFFhelpThis is a hex test.# tristate 在 ESP-IDF构建系统中会被当做 bool 处理config MY_TEST_TRISTATEtristate "tristate_test"helpThis is a tristate test.# string 表示一个字符串config MY_TEST_STRINGstring "string_test"helpThis is a string test.endmenu
参考:4 ESP-IDF 创建自己的menuconfig - 哔哩哔哩