Ebullient第一阶段开发小结

2023-12-19 20:44

本文主要是介绍Ebullient第一阶段开发小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一. 简介

距离Ebullient硬件发布已有一段时间,小一个月吧,在这段时间内在努力的编写代码,现在终于完成了第一阶段的功能设计,算是一个小型的样机吧,基本的代码框架基本确定了,相信后续的会快一点(希望如此吧),下面就给大家介绍一下整体的软件框架与具体功能的介绍吧。

二. 软件框架

  1. 第一点就是核的使用,主控是ESP32S3双核,所以本次将两个核都使用起来了,一个核用来跑界面,另外一个核用来跑驱动相关的代码,两个核之间的通讯使用全局变量,一个核只置位变量,另外一个核只复位变量,尽量的保证变量的值不出错。使用全局变量可能不妥的地方,后期可能会根据需要换成消息队列、信号量等等RTOS中进程间通讯的方法。

请添加图片描述

  1. 第二点就是LVGL的页面管理,在整个设计的过程中,会涉及到非常多的界面,如果在开始的时候就对它们进行初始化,内存肯定是吃不消的,只有加载对应的页面的时候,才对其进行初始化;还有界面之间的切换,如何优雅便捷的进行切换也是一个难点。

    页面管理的的过程大概如下,将新页面的初始化函数,以及页面ID等等相关的数据添加到页面堆里面,如果页面管理通过页面ID来进行当前页面的显示,最简单的管理过程就是这样的。本次实现的页面管理在之前发布过的一个页面管理的代码上进行了修改和完成,使其更加完善。

    每个页面都添加了一些新的属性: 父页面ID,子页面ID,回调函数设置函数指针。父页面ID和子页面ID可以让界面间的切换更加优雅高效。而回调函数设置函数指针(后续可能会添加界面销毁的函数指针),类似于C++类的析构和构造函数,更加优雅高效的初始化、复位变量和释放资源。

请添加图片描述

  1. 第三点就是LVGL界面与功能函数。这将其分成了两个.c文件进行编写,一个只用于对界面进行初始化,另外一个用来响应界面相关的动作;这样在后续的界面优化与功能优化会简单很多。

以上,就是当前的一个软件架构了,感兴趣的话可以访问Gitee仓库自行下载: https://gitee.com/whpUp/ebullient

三. 软件功能

FPGA之旅 出品

在硬件发布的时候,已经明确了三大基本功能,所以本次阶段性总结也是围绕这点:

  1. 音乐播放:可以通过读取TF卡中的WAV音乐文件进行音乐的播放,暂停,快进,上一曲和下一曲等基本功能,另外还通过DSP库提供的FFT函数进行音乐的频谱分析,在界面上绘制音乐的频谱图。
  2. 通讯: 完成了WIFI连接和TCP服务器的连接,WIFI和TCP的信息存储在TF卡中,方便修改(蓝牙和WIFI类似,放在后面做);完成了NRF2.4GL01底层驱动,可以完成与其进行数据的读写。本次只实现了通讯的可行性,确保了三种方式的正确性,还未完成具体的通讯协议,将在下一阶段中完成。
  3. OTA升级: 完成了从TF卡中加载固件进行升级,验证了OTA升级的可行性,下一阶段再扩展到WIFI,蓝牙和NRF2.4GL01无线通讯进行升级。

以上就是这三个主要功能完成的一个基本情况,还有许多不完善的情况,需要在下一阶段进一步的完善。

最后就是一个演示视频啦:
跳转链接(公众号)

需要实物的也可以私聊哦,感兴趣的话可以访问Gitee仓库自行下载: https://gitee.com/whpUp/ebullient

这篇关于Ebullient第一阶段开发小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513644

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.