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