跟着野火从零开始手搓emWin(1)初识emWin

news2024/10/7 12:25:04

PS:在嵌入式领域,本人认为QT的应用范围和性能几乎吊打市面上所有的GUI工具。但是本人之所以学习emWin,是因为自己有些微不足道的小想法,需要通过它来实现。但是QT有点吃硬件的配置,为了MCU专门发行的QT我又懒得去弄(玩嵌入式的多少都知道装QT的痛),所以我选择emWin。因为很大一部分原因是出于爱好,所以这个系列会更新的很慢。

        这一篇算是简单介绍,没什么有营养的东西,可以直接跳过。

emWin库文件

        目前, ST 官网中的 STemWin 版本已经不再继续更新, ST 已经将最新版本的STemWin 放到了 STM32 CUBE 库中。 STM32 CUBE 库可以从官网或者 STM32CubeMX 软件中获得。我这里使用的是野火提供个软件包,所以使用的版本为5.44a。

        解压得到STemWin库之后,其目录下内容如图所示:

        Config :其中的 GUIConf.c 文件用于配置 emWin 的存储空间分配,GUIConf.h 文 件 用 于 裁 剪 emWin 的 功 能 。其余的文件是 emWin 应用在不同液晶时使用的不同驱动模板;

        Documentation 提供了 emWin 库的用户手册。

        inc :它包含了全部的 emWin 库核心的头文件,各种关于库函数的声明、定义都在这些文件里面;

        Lib :包含 emWin 的代码库文件,针对不同 CPU 内核以及是否优化,都有一个相对应的 emWin 库,在使用的时候可以根据自己的平台选择合适的库文件;

        OS :它包含了 GUI_X.c 及 GUI_X_FreeRTOS.c 文件,分别是对应裸机平台的 GUI 延时,和多任务系统平台的关于进程调度之类的一些 emWin 所需要的底层接口;

        Simulation :它包含了用于 PC 端仿真时的 lib 库和一些依赖,但不包含PC 端仿真的完整工程。

        Software :它包含了 许多 PC 端辅助开发的软件工具。比如 BmpCvt.exe 用于把图片数据转换成 C 文件, GUIBuilder.exe 是一个使用图形界面方式开发 emWin 应用的工具,FontCvt.exe 则用于字体文件转换;

        Release_Notes.html :关于 emWin 库不同发行版本的简要更新说明文档。

emWin 应用的软件架构

        emWin 的软件架构如下:

        首先是硬件层,硬件层也就是我们常说的底层驱动,它提供了对硬件平台资源最直接的访问; emWin 软件库承上启下,它运行在硬件层之上,与硬件层之间仅靠液晶驱动连接起来,而向应用层则提供了各种便于用户制作 GUI 应用的接口。

        如果不使用 emWin 的软件架构,很可能由硬件层直接过渡到应用层。这样的应用程序将十分依赖于某个特定的硬件平台,不容易迁移到其它设备之中。而使用软件架构的好处就是方便我们进行移植。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1618850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac电脑搭建vue项目(下篇)

第三步:安装npm (1)执行以下命令安装cnpm淘宝镜像 sudo npm install -g cnpm --registryhttps://registry.npmmirror.com (2)执行命令cnpm -v查看版本信息,结果说找不到cnpm命令 (3&#xff…

智慧校园:大数据助力校情分析

随着信息技术的快速发展,数据信息资源以井喷的姿态涌现。数据信息的大量涌现给人们带来丰富的数据信息资源,但面对海量的信息资源时,加大了人们对有效信息资源获取的难度,数据挖掘技术正是这一背景下的产物,基于数据挖…

【003_音频开发_基础篇_Linux进程通信(20种你了解几种?)】

003_音频开发_基础篇_Linux进程通信(20种你了解几种?) 文章目录 003_音频开发_基础篇_Linux进程通信(20种你了解几种?)创作背景Linux 进程通信类型fork() 函数fork() 输出 2 次fork() 输出 8 次fork() 返回值fork() 创建子进程 方…

elasticsearch-8.1.0安装记录

目录 零、版本说明一、安装二、使用客户端访问 零、版本说明 centos [rootnode1 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)elasticsearch elasticsearch-8.1.0-linux-x86_64一、安装 systemctl stop firewalld.servicesystemctl disable firewal…

【国产替代】航空电子通信总线航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持

航空电子通信总线 航空电子通信总线产品为MIL-STD-1553和ARINC 429等协议提供原生支持。这些产品用于进行航空电子应用所需的开发、生产和系统测试。 PXIe,2通道PXI ARINC-664接口模块 AIM ARINC-664具有板载处理器,可自动处理所有与协议相关的活动&…

python绘图时渐变的处理——以一个扇形图的渐变为例

python绘图时渐变的处理——以一个扇形图的渐变为例 使用matplotlib绘制扇形的圆环 from matplotlib.patches import Wedge wedgeWedge((0,0),1,0,60,width0.3,colorred) wedge.set_edgecolor(k) fig,axplt.subplots(1,1) ax.add_patch(wedge) # 设置坐标轴的比例 plt.axis(e…

DaPy:实现数据分析与处理

DaPy:实现数据分析与处理 DaPy是一个用于数据分析和处理的Python库,它提供了一系列强大的工具和功能,使开发者能够高效地进行数据清洗、转换和分析。本文将深入解析DaPy库的特点、功能以及使用示例,帮助读者了解如何利用DaPy库处理…

数据库之数据库恢复技术思维导图+大纲笔记

大纲笔记: 事务的基本概念 事务 定义 用户定义的一个数据库操作系列,这些操作要么全做,要么全不做,是一个不可分割的基本单位 语句 BEGIN TRANSACTION 开始 COMMIT 提交,提交事务的所有操作 ROLLBACK 回滚&#xff0c…

CAN通信简单入门(一)

1.IIC和CAN通信的主要区别 IIC至少需要3根线,SCL,SDA,GND 但是CAN只需要两条线,CAN_H以及CAN_L 2.CAN简介 3.主流通信协议详解 反正CAN通信最大的优势就是:可以多个主机同时进行通信 4.CAN协议详解 4.1 CAN硬件电路 在闭环电路当中&…

Android Studio 报错:AVD Pixel_3a_API_30_x86 is already running

在我的Android Studio和虚拟机运行时,我的电脑不小心关机了,在启动后再次打开Android Studio并运行虚拟机时发现报错。 Error while waiting for device: AVD Pixel_3a_API_30_x86 is already running. If that is not the case, delete the files at C…

数据结构实验(三)

算法设计 一、判断回文序列 1、算法思路: 输入想要判断的字符串,用数组来存放该字符串,给数组一个最左的下标low,和最右的下标right.比较两端的字符是否相等,如果相等那么low,right--.直到遍历完字符串,如果字符不相…

机器人系统开发ros2-基础实践01-学会自定义一个机器人动作aciton实体类

您之前在了解操作教程中了解了action 。与其他通信类型及其各自的接口(主题/消息和服务/srv)一样,您也可以在包中自定义操作。本教程向您展示如何定义和构建可与您将在下一个教程中编写的action服务器和action 客户端一起使用的操作。 需要理…

Jenkins 打包报错记录 error: index-pack died of signal 15

问题背景,打包每次到92%时就会报错,试了好几次都是同样的错误 14:56:53 fatal: index-pack failed 14:56:53 14:56:53 at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2734) 14:56:53 at org.jenkinsci.plugi…

WPF4 数据模板

数据模板 数据模板常用在3种类型的控件, 下图形式: 1.Grid这种列表表格中修改Cell的数据格式, CellTemplate可以修改单元格的展示数据的方式。 2.针对列表类型的控件, 例如树形控件,下拉列表,列表控件, 可以修改其中的ItemTemplate。 3.修改ContentT…

使用API有效率地管理Dynadot域名,自查账户信息

关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…

【QT进阶】Qt http编程之实现websocket client客户端

往期回顾 【QT进阶】Qt http编程之nlohmann json库使用的简单介绍-CSDN博客 【QT进阶】Qt http编程之websocket的简单介绍-CSDN博客 【QT进阶】Qt http编程之实现websocket server服务器端-CSDN博客 【QT进阶】Qt http编程之实现websocket client客户端 一、最终效果 通过给定…

随笔Ubuntu上的的一些使用

Ubuntu简易使用 常用指令 cdlsmkdirrf -rm 路径 换源 备份镜像 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑文件设置 sudo gedit /etc/apt/sources.list清华源 # 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe mul…

Elasticsearch集群部署(Linux)

1. 准备环境 这里准备三台Linux虚拟机,用于配置Elasticsearch集群和部署可视化工具Kibana。 角色IP域名集群名称节点名称版本操作系统ES192.168.243.100linux100cluster-eses-node-1007.12.0CentOS 7192.168.243.101linux101cluster-eses-node-101192.168.243.102…

Linux——进程基本概念下篇

Linux——进程基本概念下篇 文章目录 Linux——进程基本概念下篇一、环境变量1.1 环境变量的定义1.2 环境变量的相关命令1.3 命令行参数1.4 本地变量和环境变量1.5 常规命令和内建命令 二、进程地址空间2.1 地址空间的概念2.2 页表和MMU2.3 地址空间的作用2.4 地址空间的好处 一…

学习配置文件

1.yml的语法格式问题: 2.配置文件获取数据: Value方式: Environment: 获取自定义对象的方式: 设置get和set方法,还有toString方法。 3. 日志配置: logo的配置: 日志插件&#xff…