内容简介
     《基于STemWin的STM32开发与实践》全面、深入地介绍了STemWin图形用户界面系统(GUI)的强大功能和使用方法。内容涵盖STemWin的基础知识、移植方法,BMP、JPEG、GIF、PNG等图片文件的解码显示和所有控件的使用方法,并提供了完善的汉字显示方案。本书采用“理论+实验”的编写方式,配套大量的实验例程,图文并茂,内容通俗易懂,可以帮助读者快速掌握STemWin的应用技术。
     作者简介
     白永斌,实时操作系统(RTOS)和DSP资深工程师,具有丰富的实时操作系统、嵌入式系统研发实践和培训经验。
     目录
   第1章 STemWin基础知识 
1.1 STemWin概述 
1.1.1 STemWin、emWin、μCGUI之间的关系 
1.1.2 SEGGER公司介绍 
1.1.3 STemWin介绍 
1.1.4 STM32F103和STM32F407跑STemWin性能测试 
1.2 STemWin5.xx的移植 
1.2.1 关于STemWin移植的重要说明 
1.2.2 移植前的准备工作 
1.2.3 STemWin的裸机移植 
1.2.4 STemWin带RTOS的移植 
1.3 RA8875屏触摸校准自适应 
1.3.1 触摸校准基础知识介绍 
1.3.2 触摸屏校准步骤 
1.3.3 触摸参数自动加载 
1.4 μCGUIBulder4.0和GUIBulder5.22的使用方法 
1.4.1 GUIBulder5.22的使用步骤 
1.4.2 μCGUIBulder4.0的使用 
1.4.3 将生成的代码移植到STM32-V5开发板 
1.5 emWin5.24模拟器与查看器 
1.5.1 emWin5.24模拟器 
1.5.2 emWin5.24查看器 
第2章 STemWin文本与数值显示 
2.1 文本显示 
2.1.1 简单文本显示 
2.1.2 文本显示模式 
2.1.3 GUI_DispStringInRectWrap函数的使用 
2.1.4 文本显示实例――自动换行的实现 
2.2 数值显示 
2.2.1 十进制数的显示 
2.2.2 十六进制数和二进制数的显示 
2.2.3 浮点数的显示 
第3章 2D图形库 
3.1 基本绘图 
3.1.1 画笔设置 
3.1.2 基本绘制 
3.1.3 Alpha混合 
3.2 绘制流位图 
3.2.1 生成C流文件 
3.2.2 移植到开发板 
3.3 绘制图形 
3.3.1 绘制多边形 
3.3.2 绘制圆 
3.3.3 绘制椭圆 
3.3.4 绘制弧线 
3.3.5 绘制线图 
3.3.6 绘制饼图 
第4章 STemWin图片显示 
4.1 BMP图片显示 
4.1.1 BMP图片支持 
4.1.2 绘制已经加载到存储器的BMP图片 
4.1.3 绘制须加载到存储器的BMP图片 
4.2 JPEG图片显示 
4.2.1 JPEG图片支持 
4.2.2 绘制已加载到存储器的JPEG图片 
4.2.3 绘制须加载到存储器的JPEG图片 
4.3 GIF图片显示 
4.3.1 GIF图片支持 
4.3.2 绘制已加载到存储器的GIF图片 
4.3.3 绘制须加载到存储器的GIF图片 
4.4 PNG图片显示 
4.4.1 PNG图片支持 
4.4.2 绘制已加载到存储器的PNG图片 
4.4.3 绘制须加载到存储器的PNG图片 
第5章 STemWin字符显示 
5.1 STemWin支持字体 
5.1.1 字体类型 
5.1.2 字符集 
5.1.3 标准字体 
5.2 STemWin汉字显示 
5.2.1 汉字显示基础知识 
5.2.2 汉字显示方式 
5.3 STemWin外语支持 
5.3.1 Unicode 
5.3.2 阿拉伯语支持 
5.3.3 泰语支持 
5.3.4 Shift JIS支持 
5.4 外置字体(XBF) 
5.4.1 XBF格式字体生成方法 
5.4.2 XBF移植 
5.5 系统独立字体(SIF) 
5.5.1 SIF格式字体生成方法 
5.5.2 SIF移植 
5.6 矢量字体(TrueType) 
5.6.1 矢量字体概述 
5.6.2 STemWin对矢量字体的支持 
5.6.3 在模拟器上运行矢量字体 
5.6.4 矢量字体移植 
第6章 STemWin光标 
6.1 STemWin支持的光标效果 
6.2 在模拟器上演示光标 
6.3 在模拟器上演示动态光标 
第7章 STemWin支持的颜色 
7.1 预定义颜色 
7.2 固定调色板及其说明 
7.3 在模拟器上演示颜色条测试例程 
第8章 Sprite 
8.1 Sprite概述 
8.2 在模拟器上演示Sprite实例 
第9章 STemWin抗锯齿(AA)技术 
9.1 抗锯齿(AA)基础知识 
9.1.1 抗锯齿质量 
9.1.2 抗锯齿字体 
9.1.3 高分辨率坐标 
9.2 抗锯齿API函数实例演示 
9.3 抗锯齿(AA)实例 
9.3.1 实例1――AA_HiResAntialiasing 
9.3.2 实例2――AA_HiResPixels 
9.3.3 实例3――AA_Lines 
第10章 STemWin多任务设计 
10.1 模拟器多任务设计 
10.1.1 单任务系统(超级循环) 
10.1.2 多任务系统:一个任务调用emWin 
10.1.3 多任务系统:多个任务调用emWin 
10.1.4 官方推荐运行方式 
10.1.5 在模拟器上运行多任务 
10.2 μCOS-Ⅲ多任务设计 
10.2.1 单任务系统(超级循环) 
10.2.2 多任务系统:一个任务调用emWin 
10.2.3 多任务系统:多个任务调用emWin 
第11章 STemWin输入设备 
11.1 指针输入设备(摇杆) 
11.1.1 概述 
11.1.2 指针输入设备(API) 
11.1.3 五向摇杆操作光标 
11.2 键盘输入(实体按键操作控件) 
11.2.1 概述 
11.2.2 驱动层API 
11.2.3 实体按键操作 
第12章 STemWin窗口管理器 
12.1 回调机制 
12.1.1 术语说明 
12.1.2 回调机制、效化和渲染 
12.2 消息类型 
12.2.1 消息结构 
12.2.2 消息类型 
12.2.3 系统类型消息实例 
12.2.4 指针输入设备(PID)类型消息实例 
12.2.5 通知代码类型消息实例 
12.3 定时器使用 
12.3.1 定时器功能介绍 
12.3.2 在桌面窗口上使用定时器实例 
12.3.3 在对话框上使用定时器实例 
12.4 ToolTips的使用 
12.4.1 ToolTips概述 
12.4.2 ToolTips实例 
12.5 窗口管理器实例 
12.5.1 用户自定义消息类型实例 
12.5.2 桌面窗口回调函数实例 
12.5.3 WM_Redraw.c实例 
12.5.4 WM_Sample.c实例 
12.5.5 WM_LateClipping.c实例 
12.5.6 WM_Video.c实例 
第13章 STemWin控件 
13.1 控件基础知识 
13.1.1 当前支持的控件 
13.1.2 控件的重绘机制 
13.1.3 控件使用方法 
13.1.4 控件配置选项 
13.1.5 通用控件API 
13.1.6 常用函数 
13.2 对话框基础知识 
13.2.1 对话框概述 
13.2.2 创建对话框 
13.2.3 对话框API 
13.3 按钮控件 
13.3.1 按钮控件概述 
13.3.2 按钮控件实例 
13.3.3 在对话框上使用按钮控件 
13.4 复选框控件 
13.4.1 复选框控件概述 
13.4.2 复选框控件实例――WIDGET_CheckBox实例 
13.5 下拉列表控件 
13.5.1 下拉列表控件概述 
13.5.2 下拉列表控件实例――WIDGET_Dropdown实例 
13.5.3 在对话框上使用下拉列表控件 
13.6 编辑控件 
13.6.1 编辑控件概述 
13.6.2 编辑控件实例――WIDGET_Edit实例 
13.6.3 在对话框上使用编辑框控件 
13.7 框架窗口控件 
13.7.1 框架窗口控件概述 
13.7.2 框架窗口控件实例――WIDGET_FrameWin实例 
13.8 图形控件 
13.8.1 图形控件概述 
13.8.2 图形控件实例――WIDGET_GraphYT实例 
13.8.3 使用GUIBulder建立Graph控件 
13.9 标题控件 
13.9.1 标题控件概述 
13.9.2 标题控件实例――WIDGET_Header实例 
13.9.3 使用GUIBulder建立HEADER控件 
13.10 列表框控件 
13.10.1 列表框控件概述 
13.10.2 列表框控件实例――WIDGET_ListBox实例 
13.10.3 在对话框上使用列表框控件 
13.11 菜单控件 
13.11.1 菜单控件概述 
13.11.2 菜单控件实例――WIDGET_Menu实例 
13.11.3 使用GUIBulder建立MENU控件 
13.12 消息框控件 
13.12.1 消息框控件概述 
13.12.2 消息框控件实例 
13.13 多行文本控件 
13.13.1 多行文本控件概述 
13.13.2 多行文本控件实例――WIDGET_Multiedit实例 
13.13.3 使用μCGUIBulder建立多行文本控件 
13.14 多页控件 
13.14.1 多页控件概述 
13.14.2 多页控件实例――WIDGET_ Multipage实例 
13.14.3 使用GUIBulder建立多页控件 
13.15 进度条控件 
13.15.1 进度条控件概述 
13.15.2 进度条控件实例――WIDGET_Progbar实例 
13.15.3 使用μGUIBulder建立进度条控件 
13.16 单选按钮控件 
13.16.1 单选按钮控件概述 
13.16.2 单选按钮控件实例――DIALOG_Radio实例 
13.16.3 使用GUIBulder建立单选按钮控件 
13.17 滚动条控件 
13.17.1 滚动条控件概述 
13.17.2 滚动条控件实例――DIALOG_Scrollbar实例 
13.17.3 使用GUIBulder建立滚动条控件 
13.18 滑块控件 
13.18.1 滑块控件概述 
13.18.2 滑块控件实例――DIALOG_SliderColor实例 
13.18.3 使用GUIBulder建立滑块控件 
13.19 文本控件 
13.19.1 文本控件概述 
13.19.2 使用GUIBulder建立文本控件 
13.20 窗口控件 
13.20.1 窗口控件概述 
13.20.2 窗口控件实例――WIDGET_Window实例 
13.21 SPINBOX控件 
13.21.1 SPINBOX控件概述 
13.21.2 SPINBOX控件实例――WIDGET_Spinbox实例 
13.21.3 使用GUIBulder建立SPINBOX控件 
13.22 LISTVIEW控件 
13.22.1 LISTVIEW控件概述 
13.22.2 LISTVIEW控件实例――WIDGET_ListView实例 
13.22.3 使用GUIBulder建立LISTVIEW控件 
13.23 在对话框上绘制2D图形的方法 
附录A 安富莱STM32-V5开发板套件 
A.1 简介 
A.2 硬件配置 
A.3 文档教程 
A.4 技术支持      
前言/序言
       
				 
				
				
					卓越工程师培养计划·嵌入式系统:基于STemWin的STM32开发与实践  内容简介:  本书是一本面向嵌入式系统开发者的专业技术书籍,聚焦于使用STM32系列微控制器结合STemWin图形库进行嵌入式GUI(图形用户界面)的设计与开发。全书共分为五个主要部分,系统性地讲解了从基础概念到高级应用的完整开发流程,旨在帮助读者快速掌握嵌入式GUI开发的实用技能,培养具备独立解决复杂嵌入式系统设计问题的卓越工程师。  第一部分:嵌入式系统与STM32微控制器基础  本部分旨在为读者构建坚实的嵌入式系统和STM32硬件平台基础。首先,我们将深入剖析嵌入式系统的核心概念,包括其定义、特点、应用领域以及与通用计算系统的区别。我们将详细阐述嵌入式系统的软硬件协同设计原理,分析实时操作系统(RTOS)在嵌入式系统中的作用和重要性,并探讨嵌入式系统开发中常见的挑战,如资源受限、实时性要求、功耗优化等。  随后,我们将聚焦于STMicroelectronics公司推出的STM32微控制器系列。我们将详细介绍STM32的架构特点,包括ARM Cortex-M内核的优势、不同STM32系列的选型指南(如STM32F0/F1/F4/F7/H7等),以及它们在性能、功耗、外设集成度等方面的差异。读者将了解STM32的存储器结构、时钟系统、中断控制器、DMA控制器等核心硬件组成部分,并学习如何正确配置和使用这些基础外设。  在本部分,我们还将重点讲解STM32的开发环境搭建。这包括交叉编译器的安装与配置(如GCC),集成开发环境(IDE)的选择与使用(如STM32CubeIDE, Keil MDK, IAR Embedded Workbench等),以及代码调试技巧。读者将学会如何创建、编译、下载和调试STM32程序,并理解基本的硬件抽象层(HAL)库和低层(LL)库的使用方法,为后续的GUI开发打下坚实的基础。  第二部分:STemWin图形库详解与应用  本部分是本书的核心内容,将详细介绍STemWin图形库的功能、架构以及在STM32上的应用。STemWin是一个功能强大且高度灵活的嵌入式图形库,专为资源受限的嵌入式系统而设计,能够帮助开发者轻松创建美观且交互性强的图形用户界面。  我们将从STemWin的整体架构入手,讲解其核心组件,如窗口管理器、图形绘制引擎、事件处理机制等。读者将了解STemWin是如何管理屏幕显示、处理用户输入(如触摸屏、按键)、以及如何实现各种图形元素的绘制(如线条、矩形、圆形、文本、图片等)。  接下来,我们将深入讲解STemWin提供的丰富控件库。这包括但不限于:    基本控件: 按钮(Button)、文本框(Edit),复选框(Checkbox),单选按钮(Radio Button),列表框(Listbox),下拉列表(Combobox)等。我们将详细介绍每个控件的属性、事件和使用方法,并通过实例演示如何将它们集成到UI界面中。    高级控件: 滑块(Slider),进度条(Progress Bar),滚动条(Scrollbar),图表(Graph/Plot Widget),树形控件(Tree Widget),表格控件(Table Widget)等。这些控件能够帮助开发者创建更复杂、更具信息量的用户界面。    自定义控件: 在掌握了基本控件的使用后,我们将引导读者学习如何根据实际需求创建自定义控件,以实现更具创意的UI设计。  此外,本部分还将重点讲解STemWin的事件驱动机制。理解事件的产生、捕获和处理是构建响应式GUI的关键。读者将学习如何为不同的控件绑定事件处理函数,如何处理触摸屏输入事件(单击、滑动、拖拽等),以及如何实现不同界面之间的切换和通信。  第三部分:STM32与STemWin的集成开发实践  本部分将理论与实践相结合,指导读者如何在STM32硬件平台上实现STemWin的集成开发。我们将详细讲解STemWin在STM32上的移植过程,包括配置STM32CubeMX工具来生成基础工程,设置LCD控制器(如TFT LCD),以及初始化STemWin所需的驱动程序。  读者将学习如何使用STM32CubeMX进行图形库的配置,选择合适的LCD驱动,并设置屏幕分辨率、颜色深度等参数。我们将演示如何生成包含STemWin库文件的工程,并讲解在STM32CubeIDE等IDE中如何进行工程管理和构建。  本部分将通过一系列由浅入深的实际项目来巩固读者的学习成果。这些项目将涵盖嵌入式GUI开发的常见场景,例如:    简易仪表盘: 使用STemWin绘制仪表盘,显示实时数据,如速度、温度、电压等,并配以指针和刻度。    音乐播放器界面: 设计一个包含播放/暂停按钮、音量控制滑块、歌曲列表的音乐播放器UI。    设置菜单: 开发一个层次化的设置菜单,用于配置系统参数,如网络设置、显示亮度、音量等。    触摸屏校准工具: 实现一个简单的触摸屏校准程序,以确保触摸输入的准确性。  在每个项目开发过程中,我们将详细讲解开发步骤、关键代码实现、以及可能遇到的问题和解决方案。读者将学会如何进行UI布局设计,如何管理多个屏幕和窗口,以及如何优化GUI的性能。  第四部分:高级GUI特性与性能优化  本部分将带领读者深入探索STemWin的高级功能,并学习如何优化嵌入式GUI的性能。  我们将讲解STemWin的窗口管理的高级特性,如窗口的层叠、裁剪、局部刷新等,以及如何利用这些特性来实现更复杂的UI效果,例如动画效果、弹出窗口、菜单栏等。  图像处理是嵌入式GUI中常见的需求。本部分将介绍如何加载和显示各种格式的图片(如BMP, PNG),如何进行图片缩放、裁剪和颜色转换。我们还将探讨如何使用STemWin的字库管理功能,导入自定义字库,并实现多语言支持。  性能优化是嵌入式系统开发中至关重要的一环。我们将深入分析GUI渲染的瓶颈,讲解如何通过合理的UI设计、高效的绘图算法、以及优化的内存管理来提升GUI的响应速度和流畅度。这包括:    局部刷新策略: 讲解如何只刷新发生变化的区域,避免不必要的屏幕重绘。    双缓冲技术: 介绍如何利用双缓冲来减少屏幕闪烁,提升视觉效果。    内存管理优化: 讨论如何合理分配和管理内存,尤其是在资源受限的嵌入式系统中。    代码效率提升: 分析常用的性能优化技巧,如避免在中断服务函数中进行耗时操作,优化算法复杂度等。  此外,本部分还将触及嵌入式GUI的安全性和稳定性方面,例如如何处理异常情况、如何进行错误检测和恢复,以及如何保证UI的可靠运行。  第五部分:实际项目案例与进阶探索  本部分将通过一个或多个更复杂的实际项目案例,系统性地整合前几部分所学的知识,帮助读者将所学技能应用于解决实际的嵌入式开发问题。这些案例将涵盖更广泛的应用场景,例如:    智能家居控制终端: 设计一个集成了设备状态显示、远程控制、场景模式设置的智能家居控制界面。    工业控制显示屏: 开发一个用于监测和控制工业设备的UI,包含实时数据图表、报警信息、操作指令输入等。    医疗设备用户界面: 构建一个用于医疗设备的友好、直观的用户界面,满足严格的易用性和可靠性要求。  在项目案例的讲解中,我们将深入分析项目需求,进行详细的UI设计,并逐步实现各个功能模块。我们将重点关注项目的可维护性、可扩展性和鲁棒性,并分享在实际开发过程中积累的最佳实践和经验。  最后,本部分还将为读者提供一些进阶探索的方向,例如:    嵌入式GUI的3D渲染: 简要介绍使用OpenGL ES等技术在STM32上实现3D图形。    嵌入式AI与GUI的结合: 探讨如何将AI算法的结果通过GUI进行可视化展示。    跨平台GUI框架: 简要介绍其他流行的嵌入式GUI框架(如LVGL, TouchGFX等)及其优缺点。    嵌入式软件工程最佳实践: 强调版本控制、单元测试、代码审查等在嵌入式开发中的重要性。  本书力求通过理论与实践的紧密结合,帮助读者构建扎实的嵌入式GUI开发能力,培养解决实际问题的工程思维,从而为成为一名优秀的嵌入式系统工程师奠定坚实的基础。