STemWin 在 stm32H7 上的移植
添加文件到工程在工程模板目录下新建一个 emwin 文件夹,将 ST 官网下载的 H7 的 Cube 库下
Middlewares->ST->STemWin 拷贝到工程目录的 emwin 目录下,其中只保留 Config、inc、Lib、
OS 这几个文件夹,其它删除,如下图所示
然后,将相应文件加入 MDK 工程,如下图所示
添加头文件路径,如下图所示,至此,工程搭建完毕,下面我们开始移植
修改 GUIConf.c 文件,重新分配 STemWin 的动态缓存大小,如下图所示
添加触摸支持
修改 GUIConf.h 文件,打开触摸开关,STemWin 默认是关闭触摸功能的,
添加触摸屏驱动文件,这里不再列出具体内容,请查看实验工程。触摸屏扫描,每隔
50ms 扫描一次,这里在 SysTick 中断服务函数中每隔 50ms 调用一次扫描函数 TS_Scan,如
下图所示
加入 Demo 演示
在工程目录 STemWin 目录下新建 Application 文件夹,其下拷贝 Demo 演示文件,这里
我们从 MDK 安装目录下提取,MDK 版本为 5.17,演示文件路径如下:
ARM\Pack\Keil\MDK-Middleware\6.5.0\emWin\Sample\Application\GUIDemo
将文件加入 MDK 工程,如下图所示:
为 GUI 增加心跳,这里还是利用 SysTick 定时器,在 SysTick 中断服务函数中添加语句
OS_TimeMS++;最后,打开 GUIDEMO 的模块开关,在 GUIDEMO.h 中
#if 1 // Show all demos
#ifndef SHOW_GUIDEMO_AATEXT
#define SHOW_GUIDEMO_AATEXT (1)
#endif
#ifndef SHOW_GUIDEMO_AUTOMOTIVE
#define SHOW_GUIDEMO_AUTOMOTIVE (1)
#endif
#ifndef SHOW_GUIDEMO_BARGRAPH
#define SHOW_GUIDEMO_BARGRAPH (1)
#endif
#ifndef SHOW_GUIDEMO_BITMAP
#define SHOW_GUIDEMO_BITMAP (1)
#endif
#ifndef SHOW_GUIDEMO_COLORBAR
#define SHOW_GUIDEMO_COLORBAR (1)
#endif
#ifndef SHOW_GUIDEMO_CURSOR
#define SHOW_GUIDEMO_CURSOR (1)
#endif
#ifndef SHOW_GUIDEMO_FADING
#define SHOW_GUIDEMO_FADING (0)
#endif
#ifndef SHOW_GUIDEMO_GRAPH
#define SHOW_GUIDEMO_GRAPH (1)
#endif
#ifndef SHOW_GUIDEMO_ICONVIEW
#define SHOW_GUIDEMO_ICONVIEW (1)
#endif
#ifndef SHOW_GUIDEMO_IMAGEFLOW
#define SHOW_GUIDEMO_IMAGEFLOW (0)
#endif
#ifndef SHOW_GUIDEMO_LISTVIEW
#define SHOW_GUIDEMO_LISTVIEW (1)
#endif
#ifndef SHOW_GUIDEMO_RADIALMENU
#define SHOW_GUIDEMO_RADIALMENU (1)
#endif
#ifndef SHOW_GUIDEMO_SKINNING
#define SHOW_GUIDEMO_SKINNING (0)
#endif
#ifndef SHOW_GUIDEMO_SPEED
#define SHOW_GUIDEMO_SPEED (1)
#endif
#ifndef SHOW_GUIDEMO_SPEEDOMETER
#define SHOW_GUIDEMO_SPEEDOMETER (0)
#endif
#ifndef SHOW_GUIDEMO_TRANSPARENTDIALOG
#define SHOW_GUIDEMO_TRANSPARENTDIALOG (1)
#endif
#ifndef SHOW_GUIDEMO_TREEVIEW
#define SHOW_GUIDEMO_TREEVIEW (1)
#endif
#ifndef SHOW_GUIDEMO_VSCREEN
#define SHOW_GUIDEMO_VSCREEN (0)
#endif
#ifndef SHOW_GUIDEMO_WASHINGMACHINE
#define SHOW_GUIDEMO_WASHINGMACHINE (1)
#endif
#ifndef SHOW_GUIDEMO_ZOOMANDROTATE
#define SHOW_GUIDEMO_ZOOMANDROTATE (0)
#endif
Main 函数你如下:int main(void)
{
System_Init();
//使能 CRC,STemWin 以此作为依据判断是否运行在 STM32 上
__HAL_RCC_CRC_CLK_ENABLE();
//初始化 EEPROM,触摸用到
while(EEPROM_Init() != EEPROM_OK)
{
}
GUIx_Init();
//显示器初始化
TS_Init();
//触摸屏初始化
SysTick_Init(systick_isr);
//触摸屏初始化完成后调用
LED_Init();
//STemWin 初始化
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_Init();
while(1)
{
MainTask();
}
} 这里要开启 CRC 时钟,这是 ST 对 STemWin 做的保护,使其只能在 ST 的 MCU 上运行
页:
[1]