当前位置: 首页 > 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!

相关文章:

  • 如何通过外链建设提升Shopify独立站的权重和排名
  • 第9.1讲、Tiny Encoder Transformer:极简文本分类与注意力可视化实战
  • 23种经典设计模式(GoF设计模式)
  • 【spring】spring学习系列之十一:spring的事件监听
  • 《会计研究》顶刊数据复刻!上市公司环境规制压力数据及研究价值
  • Android多线程下载文件拆解:原理、实现与优化
  • 2570. 合并两个二维数组 - 求和法
  • 每日leetcode
  • 手搓四人麻将程序
  • 如何应对kaggle离线安装环境?
  • 5月21日星期三今日早报简报微语报早读
  • Cross-Mix Monitoring for Medical Image Segmentation With Limited Supervision
  • 【C语言】复习~数组和指针
  • 云DNS智能解析:实现多区域部署
  • SpringBoot JAR 启动原理
  • 【Linux高级全栈开发】2.2.1 Linux服务器百万并发实现2.2.2 Posix API与网络协议栈
  • Mysql差异备份与恢复
  • 小黑黑prompt表述短语积累1
  • YOLO训练输入尺寸代表什么 --input_width 和 --input_height 参数
  • QGIS3.40.X使用OSM获取数据
  • 网站建设后需要录入/谷歌seo工具
  • 免费域名解析网站建设/推广网站免费