当前位置: 首页 > news >正文

SOC-ESP32S3部分:4-参数配置可视化menuconfig

飞书文档https://x509p6c8to.feishu.cn/wiki/LPcdwQYAiiE9ZjkA3rzcU1Vknve

传统C语言代码进行配置时,一般使用#define宏定义的办法,乐鑫把Kconfig功能融进了配置中,让我们可以轻松使用更加直观的界面对工程进行配置。

1.1、工程创建

首先我们创建工程,我们可以重新创建,也可以拷贝上节课的工程,修改名称为02_menuconfig_project,同时修改app\02_menuconfig_project\CMakeLists.txt中的工程名称

cmake_minimum_required(VERSION 3.16)include($ENV{IDF_PATH}/tools/cmake/project.cmake)project(02_menuconfig_project)

然后执行idf.py fullclean清除前面编译的中间文件,此时build文件夹下的内容会被清空

idf.py fullclean

然后就可以重新编译啦

df.py set-target esp32s3 
idf.py build

1.2、查看工程配置界面

当我们在工程下执行idf.py menuconfig,此时会打开一个可视化窗口,在此窗口中我们就可以对工程进行定制化配置。

PS H:\AI\esp32aibox\app\02_menuconfig_project> idf.py menuconfig

你可以把这里的配置比作Keil中的魔法棒窗口,可以配置各类编译参数、烧录参数,里面的内容非常多,但是这节课我们暂时不需要修改其中任何模块,我们只需要了解下这个窗口的操作按键即可。

方向键(↑ ↓ ):
↑ 和 ↓:在菜单项之间上下移动。
如果是window环境,方向按键可能是j、k或者↑、↓Enter(回车):
进入子菜单或打开选项的配置界面。Space(空格):
开启或关闭某个配置,[]为未选择,[*]为选择。Esc:
返回上一级菜单。
多次按Esc可以退出菜单。

退出时,如果你有修改了相关配置,会提示你是否保持配置,如果你不像修改,记得选N。

接着,我们可以添加一点自己的配置,我们先按Esc按键退出,如果你已经修改了配置,这里会提问你是否保存,记得点击按键N即可。

1.2.1、添加自己的菜单

如果我们希望在menuconfig中添加我们自己的定制的菜单,应该如何添加呢?也很简单,我们只需要在工程中添加一个main/Kconfig.projbuild文件,注意路径哦,在main文件夹下方

# put here your custom config value
menu "Example Configuration"
config ESP_WIFI_SSIDstring "WiFi SSID"default "myssid"helpSSID (network name) for the example to connect to.config ESP_WIFI_PASSWORDstring "WiFi Password"default "mypassword"helpWiFi password (WPA or WPA2) for the example to use.
endmenu

具体解释如下

# put here your custom config value --》注释
menu "Example Configuration"  --》菜单名
config ESP_WIFI_SSID -》参数名string "WiFi SSID" -》参数类型 显示名称,参数类型支持bool int stringdefault "myssid" -》默认值help -》帮助信息SSID (network name) for the example to connect to.
endmenu -》菜单结束标志

再次运行idf.py menuconfig后,我们就可以看到窗口中多了Example Configuration配置

接着我们可以修改它,按键盘的方向键↑ ↓window环境按j,k按键)可以选择对应菜单,按Enter回车可以进入下一层,这里我们修改下信息,选择对应选项后,按Enter回车输入内容,然后按ESC退出,然后输入Y保存。

这个窗口中的配置,保存下来后,会影响的其实就是工程的sdkconfig文件:

#
# Example Configuration
#
CONFIG_ESP_WIFI_SSID="wifiname"
CONFIG_ESP_WIFI_PASSWORD="123456"
# end of Example Configuration

换句话说,这里只是idf提供了一个可视化的配置,方便我们配置sdkconfig文件而已,我们修改后重新执行idf.py build编译。

这里可以看到这里重新遍历了所有模块,这是一个关键的信息,如果你编译时发现遍历了所有模块,那也就是意味着你已经修改了menuconfig配置,如果没有编译所有模块,意味着你是没有修改到menuconfig的。

1.2.2menuconfig菜单的作用

那这个配置有什么用呢?你可以简单理解为这其实就是宏定义,它把工程中所有的配置信息通过sdkconfig统一管理起来而已:

CONFIG_ESP_WIFI_SSID="wifiname"
CONFIG_ESP_WIFI_PASSWORD="123456"
可以理解为
#define CONFIG_ESP_WIFI_SSID "wifiname"
#define  CONFIG_ESP_WIFI_PASSWORD "123456"

我们可以做这么一个小实验,在main.c添加打印:

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "sdkconfig.h"void app_main(void)
{int i = 0;while (1) {printf("%s %s\n", CONFIG_ESP_WIFI_SSID,CONFIG_ESP_WIFI_PASSWORD);printf("[%d] Hello world!\n", i);i++;vTaskDelay(5000 / portTICK_PERIOD_MS);}
}

编译后,你就可以看到

wifiname 123456
[0] Hello world!
wifiname 123456
[1] Hello world!
http://www.xdnf.cn/news/576361.html

相关文章:

  • 啤酒游戏与系统思考
  • RESTful API设计:从原则到Gin实现
  • 【AI模型学习】ESM2
  • 部署rsync远程同步+inotify监控
  • 前端学习(6)—— WebAPI部分案例
  • 前端面经-WebGL/threeJS
  • 《Saliency Attack: Towards Imperceptible Black-box Adversarial Attack》论文分享(侵删)
  • Spring AI 1.0 快速入门
  • NVIDIA GPU 性能调优与诊断完全指南
  • ConcurrentHashMap导致的死锁事故
  • 环境搭建
  • 根据Spring官方文档,三分钟完成Springboot项目集成Spring AI
  • sqli-labs第十七关——POST注入点
  • Spring Boot整合Redis
  • RestTemplate 发送的字段第二个大写字母变成小写的问题探究
  • 9-码蹄集600题基础python篇
  • leetcode 螺旋矩阵 java
  • 5-码蹄集600题基础python篇
  • 如何设计智慧工地系统的数据库?
  • 系统程序变更管理:确保IT环境稳定性和安全性的关键
  • Entity-Relationship Model(实体-关系模型)
  • FlashAttention:传统自注意力( Self-Attention)优化加速实现
  • 用户刷题记录日历——签到表功能实现
  • 基于 Guns v5.1 框架的分页教程
  • SseEmitter是什么
  • 卷积神经网络基础(十)
  • chrono类 根据duration 类的周期类型得到对应的周期名称
  • 预警功能深度测评:如何用系统降低设备突发故障率?
  • JavaScript常用事件
  • 第P10周:Pytorch实现车牌识别