D6人机交互功能(stm32)
6.1中文字库生成原理
点阵字体及字符编码
点阵字体
字符编码
ASCII
GB2312
Unicode
UTF-8
只要在点阵显示之前,进行调用一次就可以,一般都是在我们GUI_INIT 之后
emWin中文手册27章
emWin创建中文字库
FontCvtST
官方英文文档第十二章
基于windows字库创建emWin字库
生成全部字库,需要占用35.2MB STM32 flash也就是几百k
创建小型字库
生成项目所需中文字库
温度
湿
光照
报警
灯光
风扇
传感器
控制
D6.2实现界面中文显示
第一步结果
第三步结果
第四步结果
依次添加到application每个.c文件中,除了mainDLG.c和maintask.c
D6.3代码移植到STM32上
解决兼容性的问题
MDK工程编码格式修改为utf-8
需要创建include_dlg.h
//在需要引用的地方进行头文件包含
#ifndef _DLG_H
#define _DLG_H
#include "DIALOG.h"
extern WM_HWIN TempCreate(void);
extern WM_HWIN MainCreate(void);
extern WM_HWIN LightCreate(void);
extern WM_HWIN LedCreate(void);
extern WM_HWIN HumCreate(void);
extern WM_HWIN FanCreate(void);
extern WM_HWIN AlarmCreate(void);
#endif
在freeRTOS GUItask里调用 MainTask
在Touch任务里保留 Touch检测
D6.4 代码移植到STM32下
测试出的bug
bug1:当切换界面时,出现闪屏动作,体验感非常差
bug2:当频繁切换界面时,出现花屏或者白屏
D6.5人机交互功能测试验证
切换界面闪屏问题
使用存储设备
自动使能存储设备
使能存储设备API
频繁切换界面花屏问题
/*********************************************************************
*
* GUI_X_Config
*
* Purpose:
* Called during the initialization process in order to set up the
* available memory for the GUI.
*/
void GUI_X_Config(void) {
//
// 32 bit aligned memory area
//
volatile U32* aMemory = (volatile U32*)(SRAM_BANK_ADDR);
//
// Assign memory to emWin
GUI_ALLOC_AssignMemory((void *)aMemory, GUI_NUMBYTES);
GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSUZE);
//
// Set default font
//
GUI_SetDefaultFont(GUI_FONT_32_1);
}