984|2

747

帖子

1

资源

纯净的硅(中级)

【ESP32学习_1】第一个ESP32-S3例程——hello_world [复制链接]

本帖最后由 mars4zhu 于 2022-7-16 20:00 编辑
    1. 第一个ESP32-S3例程——hello_world
      1. 编译与运行

按照文档的逐步指示,执行命令如下:

xcopy /e /i %IDF_PATH%\examples\get-started\hello_world hello_world

cd hello_world

idf.py set-target esp32s3

idf.py menuconfig

进入菜单型配置界面(类似于Linux Kernel的“make menuconfig”)

image-20220716195933-5.png  

21  idf.py menuconfig 的菜单型配置界面

全部都是默认配置,无需更改,直接退出,随后执行

idf.py build

image-20220716195933-6.png  

21  idf.py build 的执行结果截图

然后执行:

idf.py -p COM3 flash

image-20220716195933-7.png  

21  “idf.py -p COM3 flash 的执行结果截图

 

idf.py -p COM3 monitor 

image-20220716195933-8.png  

21  “idf.py -p COM3 monitor  的执行结果截图

从图中可以看到,最开始绿色部分的输出是bootloader,最后才是我们的“Hello World!”,然后10s之后自动重启,重复执行;

      1. 代码分析

由于是初次接触ESP和IDF,暂不深入分析整体架构和各种代码库、中间件,仅从例程的主体代码进行分析,代码位于main/hello_world_main.c,代码如下:

#include <stdio.h>

#include "sdkconfig.h"

#include "freertos/FreeRTOS.h"

#include "freertos/task.h"

#include "esp_system.h"

#include "esp_spi_flash.h"

 

void app_main(void)

{

    printf("Hello world!\n");

 

    /* Print chip information */

    esp_chip_info_t chip_info;

    esp_chip_info(&chip_info);

    printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",

            CONFIG_IDF_TARGET,

            chip_info.cores,

            (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",

            (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

 

    printf("silicon revision %d, ", chip_info.revision);

 

    printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),

            (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

 

    printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());

 

    for (int i = 10; i >= 0; i--) {

        printf("Restarting in %d seconds...\n", i);

        vTaskDelay(1000 / portTICK_PERIOD_MS);

    }

    printf("Restarting now.\n");

    fflush(stdout);

    esp_restart();

}

该代码基于FreeRTOS,略过所有的SDK、OS等中间件,分析app_main函数,该函数通过调用SDK中的 esp_chip_info函数,获取芯片信息,并存储到chip_info结构体中,然后将芯片的各个特征如CPU核心数、支持WIFI/BLE,Flash容量等信息打印, 最后倒计时10s,然后调用esp_restart函数重启,从而得到前文截图中的执行结果。

 


回复

2601

帖子

3

资源

版主

看来入门还是挺顺利呀,加油!期待彩精作品。

回复

2325

帖子

0

资源

版主

官方教程还是比较好的,不容易踩坑。网上好些教程都要收费。


回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
    推荐帖子
    L293D 电机驱动板的使用

    1,350736 2,https://img-blog.csdn.net/20170130152708856?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2V5c2tpbmc=/fo ...

    功率放大器的种类和特点

    功率放大器简称功放,它可以说是各类音响器材中最大的一个家族了。其品牌、型号之多,实在举不胜举。虽然都称为功放,但以其主要 ...

    模电没学好,对三极管作为开关管电路一窍不通

    请问当电源电压为9V时,NPN型三极管2N2714导通,怎么分配R1,R2,R3电阻阻值?这三个电阻等效阻值为170Ω,就这么个条件?三极管 ...

    基于Verilog HDL的异步FIFO设计与实现.pdf

    基于Verilog HDL的异步FIFO设计与实现.pdf

    有关CH32V103定时器中断问题

    【问题】定时器中断只进入一次 void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct ...

    兆易创新GD32W51x 32-bit MCU基本指令用户指南

    1. 用户基本指令 使用 USB 线将测试机与开发板连接,打开 UART 工具,连接到正确的COM 口。开发板上电并正确启动后,通过UA ...

    关闭
    站长推荐上一条 1/7 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表