ESP8266 RTOS SDK 自带样例解析(一)

本系列文章以 ESP8266 RTOS SDK 中自带的样例程序为基础,逐步解析 ESP8266 RTOS 的编程模型,主要的API,及在开发中可能遇到的问题。

作为入门,当然是永远的 hello world。

SDK 中自带的 hello world 例程位于 examples/get-started/hello_world 目录中。 项目包含一个 C 语言的源文件 - hello_world_main.c(位于 main 目录中), 其它的文件是 Make 构建系统需要的配置文件。

主程序解析

打开 hello_world_main.c 文件,可以看到代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void app_main()
{
printf("Hello world!\n");

/* Print chip information */
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
printf("This is ESP8266 chip with %d CPU cores, WiFi, ",
chip_info.cores);

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");

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();
}

从程序可以看出,一个 ESP8266 应用的入口函数为 app_main, 而不是通常 C 语言中的 main 函数。这个是由程序本身运行在 ESP8266 RTOS 的环境所决定的。

接下来的语句打印了精典的 “Hello world!”, 该语句是输出到标准输出设备,通常是无法看到的,如果我们采用 make monitor 来运行,则输出会转到 PC 端的屏幕上。

再下面就是调用API - esp_chip_info 来获得板的信息,信息包含在 esp_chip_info_t 结构中。

后面就是根据获取的信息显示板中的 CPU 核心数量,版本信息,存储信息等。

接下来是做了一个延时操作,最后使用API - esp_restart 重启了板上的系统。

运行案例

要运行样例,首先需要运行 make menuconfig 对项目进行配置,通常只需要根据开发电脑(PC)的实际连接情况改变串口设备即可。可以参考…

配置完成后,使用:

1
make flash

命令完成程序的编译,构建及上载到板。

如果没有错误,则运行

1
make monitor

监控程序的运行,启动 monitor 以后,可以使用组合键 CTRL+] 终止监控。

本文标题:ESP8266 RTOS SDK 自带样例解析(一)

文章作者:Morning Star

发布时间:2020年04月19日 - 10:04

最后更新:2021年04月16日 - 15:04

原始链接:https://www.mls-tech.info/iot/esp8266-examples-01/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。