小智-学长esp32桌面小屏幕_DesktopScreenDemoV4.0.0_系统数据初始化的代码学习

首先感谢B站up主小智-学长提供的优质开源项目并且还有详细的视频、文档教学。视频教学包括硬件设计、软件设计和外壳结构的设计,视频的链接如下:

【有手就行系列】嵌入式单片机教程-桌面小屏幕实战教学 从设计、硬件、焊接到代码编写、调试 ESP32 持续更新2022【有手就行系列】嵌入式单片机教程-桌面小屏幕实战教学 从设计、硬件、焊接到代码编写、调试 ESP32 持续更新2022_哔哩哔哩_bilibili

其中freertos的一些内容参考了这篇文章:(45条消息) FreeRTOS系列第18篇---FreeRTOS队列API函数_研究是为了理解的博客-CSDN博客,博主关于freertos系列的文章都很棒,有兴趣的朋友可以学习下。

DesktopScreenDemoV4.0.0的源码可以在小智学长的线上文档中下载到Docs (feishu.cn)。

此文主要用于个人学习成果的检验,如果能帮助到像我一样的初学者那就更好了。如果有理解错的或者写得不够好的地方,希望各位大佬不吝赐教,小弟一定虚心学习!

DesktopScreenDemoV4.0.0 app_main.c文件中对桌面小屏幕的功能实现用到了三个函数,所以我计划把项目代码分成三篇文章来进行分享,主要分成三个部分,sleep_mode_init()函数、background_task(void* arg)函数和app_main函数。这一节与大家一起学习的是app_main函数的内容。

app_main函数是DesktopScreen的主函数,因为函数内容过多,我将分成多篇文章来分享。

本篇文章介绍的这部分代码是通过调用esp32官方的API函数获取板卡的相关信息并进行打印和一些系统数据的初始化,有兴趣的朋友可以自己阅读下API参考手册。

printf("----- app start! -----\n");

    /* Print chip information */
    esp_chip_info_t chip_info;
    esp_chip_info(&chip_info);
    printf("This is %s chip with %d CPU cores, WiFi%s%s, ",
            CHIP_NAME,
            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");

1.系统数据的初始化。

1.1初始化结构体存储空间;

1.2初始化http首次数据请求标志位为真;

1.3初始化http刷新数据请求标志位为否;

1.4初始化http是否有数据信息标志位为否;

1.5初始化系统时间,小时为10;

1.6初始化系统时间,分钟为10;

void ds_system_data_init(){
    memset(&g_system_data,0,sizeof(SYSTRM_DATA_T)); 1.1
    g_system_data.first_time_httpdata_request = true; 1.2
    g_system_data.update_httpdata_request = false; 1.3
    g_system_data.has_wifi_info = false; 1.4
    g_system_data.hour = 10; 1.5
    g_system_data.minute = 10; 1.6
}

补充: ESP_ERROR_CHECK函数是一个调用_esp_error_check_failed函数的宏,用于检查代码是否有错误,并且在代码不是ESP_OK的情况下下终止程序。打印错误代码、错误位置和失败语句到串行输出。如果断言被禁用,则禁用。

#define ESP_ERROR_CHECK(x) do {                                         \
        esp_err_t err_rc_ = (x);                                        \
        if (unlikely(err_rc_ != ESP_OK)) {                              \
            _esp_error_check_failed(err_rc_, __FILE__, __LINE__,        \
                                    __ASSERT_FUNC, #x);                 \
        }                                                               \
    } while(0)

2.初始化默认NVS分区。默认NVS分区是分区表中标记为“NVS”的分区。当menuconfig中的NVS_ENCRYPTION(NVS的加密模式)开启时,此API为默认NVS分区启用NVS加密,如下所示:1.从分区表中的第一个NVS密钥分区读取安全配置(NVS密钥分区是任何子类型设置为"NVS_keys"的“数据”类型分区)2.如果在上一步骤中获得的NVS密钥部分为空,生成并存储新密钥到NVS密钥分区。3.内部调用nvs_flash_secure_init()在先前步骤中获得或生成安全配置。函数原型如下,详细信息见nvs_flash.h中的函数说明和返回值说明。

esp_err_t nvs_flash_init(void);

3.初始化底层TCP/IP栈。在应用程序启动时,此函数必须至少在程序中调用一次。

4.创建默认事件循环。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值