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

server/2024/9/24 6:23:01/

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 - 哔哩哔哩


http://www.ppmy.cn/server/9808.html

相关文章

tomcat更换应用目录

有时候要更换tomcat的应用目录&#xff0c;使之不在webapps下面。经过实验&#xff0c;有两种方法可行&#xff1a; 1. 修改server.xml中的<Host>标签 <Host name"localhost" appBase"../apps/haha" 红色字体部分修改为应用的路径&#xff0c;…

C++中的queue(容器适配器)

目录 一、成员函数 一、构造函数 二、入栈 push 三、出栈 pop 四、判空 empty 五、队列大小 size 六、取队头元素 front 七、取队尾元素 back 八、入栈 emplace 九、交换函数 swap 二、非成员函数重载 一、关系运算符重载 二、交换函数 swap C中的queue不再是容…

旅游陪同翻译难吗, 旅游翻译英译中哪家好?

近来&#xff0c;随着中国旅游业的蓬勃发展&#xff0c;旅游陪同翻译的需求也水涨船高&#xff0c;这些专业的翻译服务者为中外游客搭建起友谊的桥梁&#xff0c;引领他们共同探索中国这片古老而神秘的土地 。那么&#xff0c;旅游陪同翻译英译中难吗&#xff1f;我们如何在众多…

【Ansible】04

【Ansible】03 任务块 block任务块 使用 block 可以将多个任务合并为一个组可以将整个 block任务组 , 一起控制是否要执行 # 如果webservers组中的主机系统发行版是Rocky&#xff0c;则安装并启动nginx [rootpubserver ansible]# vim block1.yml --- - name: block tasksho…

Linux0.11 源码中的内存分页机制

学习Linux的源码&#xff0c;《深入linux 内核架构》这本书看起来就让人害怕&#xff0c;然后就想着看看早期的linux版本的源码&#xff0c;从网上查看资料发现linux0.11 这个版本有很多人拿来当成教学版本&#xff0c;而且也有很多的参考书以这个版本作为基础来讲解&#xff0…

docker-MySQL 8 主从搭建

一.目录结构&#xff1a; 我是在/home目录下&#xff0c;建立个sql文件夹&#xff1a; 二、配置文件 1.mysql配置 mysql-master下.conf文件配置 ###### [mysqld] server-id1 # 启用二进制日志 log-binmaster-bin # 指定需要复制的数据库 binlog-do-dbtest_db # 指定二进制日…

自然语言处理(NLP)技术

自然语言处理&#xff08;NLP&#xff09;技术是一种处理和分析人类语言的技术&#xff0c;它可以帮助计算机理解、解释和生成自然语言。 以下是一些常见的使用NLP技术的例子&#xff1a; 1. 机器翻译&#xff1a;NLP技术可以将一种语言翻译成另一种语言&#xff0c;比如将英…

小程序中Java后台调用接口(getAccessToken)获取调用凭据,调用接口(msgSecCheck)检测文本内容是否安全--最终版

序言:书接上一篇文章:小程序前端调用接口(getAccessToken)获取调用凭据,调用接口(msgSecCheck)检测文本内容是否安全–最终版 原因:在前端测试时,使用小程序工具的真机调试,是可以跑通的,但你用小程序工具的预览模式就会没有响应。原因就在于访问wx.request({}),中…