esp32s3 lvgl wifi sntp 实现时钟功能

本文介绍了如何在ESP32S3开发板上利用LVGL图形库和WiFi SNTP协议实现时钟功能。使用了TFT2.4寸屏幕(ST7789驱动芯片,XPT2046触摸芯片)。屏幕和触摸驱动通过同一个SPI接口控制。在LVGL v7版本上遇到与RTOS线程安全的问题,选择通过事件方式解决UI更新,避免了系统卡死。计划未来将项目迁移到LVGL v8版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

LVGL:直接使用github官方给出的

esp32:使用 esp32s3,后续建议使用 esp32,价格感觉差不多

屏幕:tft2.4,驱动芯片st7789,触摸芯片:xpt2046


效果


注意

  1. 屏幕驱动,直接使用 idf方式,在配置中,注意都使用 同一个spi,通过cs片选来控制屏幕和触摸

  1. lvgl,这里使用github给出的lvgl7版本,使

在Arduino ESP32 S3配合LVGL库中,如果你想要传递一个函数给某个事件处理器(比如按钮点击事件),通常通过回调函数的方式实现。首先,你需要定义一个函数原型,并将其作为参数传递给需要执行该函数的地方。以下是一个简单的例子,展示如何在一个按钮的点击事件中执行自定义的函数: ```cpp #include <LVGL/lvgl.h> #include <WiFiClientSecure.h> // 定义你要传递的函数 typedef void (*CustomFunction)(WiFiClientSecure& client); // 这里假设你的函数接收一个WiFiClientSecure类型的参数 void customFunction(WiFiClientSecure& client) { // 这里是你自定义的函数逻辑,例如连接到服务器 client.connect("your_server_address", 80); } void setup() { // 初始化LVGL if (!lv_init()) return; // 创建一个按钮实例 LVGL_Widget::Style style = { .bg_color = LV_COLOR_WHITE, .text_color = LV_COLOR_BLACK }; LVGL_Widget button; button.create(lv_screen_main(), "button", LV.ALIGN_CENTER, LV_POINT不做调整, 100, 50); button.set_style(style); button.add_event_cb(button_clicked, customFunction); // 传递函数指针 // 开始主循环 while (true) { lv_task_handler(); } } void loop() { // 保持任务处理器活跃 } // 这是按钮点击事件的处理函数,它会调用传入的customFunction void button_clicked(lv_obj_t *btn, CustomFunction func, void *param) { func((WiFiClientSecure*) param); // 调用传递的函数,这里的param通常就是你在setup()中的那个WiFiClientSecure实例 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值