历史上的今天
今天是:2025年08月15日(星期五)
2019年08月15日 | STM32F429DISCO与STemWin开发备忘
2019-08-15 来源:eefocus
一、emWin模拟器的使用

把例程排除掉,再把自己需要的代码添加进去编译,就可以了



官方的例程都十分给力

我自个也弄了一个

开发十分方便。
二、测试过程中遇到的一些问题总结
1)429disco的LCD坐标是这样的

触摸屏的坐标是这样的

这意味着界面的emWin的LCDconf要做一些改动,还有触摸屏驱动函数也有小小的改动。
2)emWin中屏幕的旋转,例程的竖屏改为横屏
A.硬件LTDC初始化中,不要进行改动,依旧使用例程里的x=240,y=320。
B.LCDconf中,#define XSIZE_PHYS 240 #define YSIZE_PHYS 320 也是不需要改的,因为ili9341就是240x320的,假如把以上的两个x y改动,屏幕就花屏了(改动其实是可以实现的,猜测是需要改动ili9341里的某些寄存器)
C.通过改动LCDconf中的一些宏就可以把屏幕转过来。

无效!

无效!

有效!
之所以前两个宏无效,是由于stemwin是由lib递交给我们的,不是源代码,所以前两个方式不好使,第三个方法是有效的,是将默认的GUIDRV_LIN_16改为GUIDRV_LIN_OSX_16,屏幕就变成我想要的方向了。
3)stemwin的触摸屏工作原理
typedef struct {
int x,y;
U8 Pressed;
U8 Layer;
} GUI_PID_STATE;
通过GUI_TOUCH_StoreState()或GUI_TOUCH_StoreStateEx()对上面的结构体定期录入,即可实现触摸屏的状态录入,录入后的工作就交给emwin自己处理了,我们只需要在相应的控件回调函数中补入自己想要的功能就行,很方便。

通过定期录入上面的结构体(轮询xtimer,或中断都可以),emwin可以通过上图很明显的识别出触摸的状态。
(在调试过程中,曾经在竖屏情况下,出现只识别clicked,不能识别released的情况,没去深究)
4)调试过程中假如出现莫名卡死的情况,可能是下面的原因:
A.这里设小了,要根据GUI的大小,设定合适的缓存(多大多小,我也在学习中)
#define GUI_NUMBYTES (1024) * 20
B.RTOS中分配的空间太小,也会死。
xTaskCreate(Bling14, "Bling 14", 2048, NULL, 2, &tidBling14);
emwin+FreeRTOS很好很强大,完。
史海拾趣
|
随着互联网的日益普及,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备在逐步地走向网络化,以实现分布式远程监控、信息交换与共享。目前广泛使用的以太网以及TCP/IP 协议已经成为最常用的网络标准之一,其高速、可靠、分层以及可扩充 ...… 查看全部问答> |
|
电子测量仪器工业在新中国成立之初就得到了国家的高度重视。“一五”计划和“二五”计划其间,在国家当时兴建的156项重大工程中电子测量仪器占有12项,占国家重大工程总项的7.7%。到第二个五年计划末,基本建成具有当时国际先进水平的11个工厂 ...… 查看全部问答> |
|
十万火急:ERROR: function @ Ordinal 1509 missing in Module 'coredll.dll' 在eMbedded Visual C++ 4.0中部署的工程,通过PB连接开发版设备,启动调试应用程序时,出现以下错误: ERROR: function @ Ordinal 1509 missing in Module \'coredll.dll\' !!! Please Check your SYSGEN variable !!! 程序启动失败,并提示:不 ...… 查看全部问答> |
|
stm32官方提供的usb例子中有个虚拟串口的实例,但是PC上要求安装一个st的驱动,而且占用了一个串口的资源。 我看到一些文档上说,把usb设置成cdc类的设备,可以避免安装驱动这个问题, 请问各位有类似的实例吗? 提供个啊… 查看全部问答> |
|
在手持、移动和便携式消费电子市场快速增长的今天,用可编程逻辑器件实现系统设计的比重也在不断增加。随着半导体制造工艺技术的提升,FPGA在规模、速度、价格等方面的竞争力都得到了极大的改善,而与此同时如何有效地控制FPGA的功耗则显得越 ...… 查看全部问答> |




