一、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很好很强大,完。
上一篇:STM32与FreeRTOS学习备忘,xSemaphoreGiveFromISR
下一篇:STM32待机模式Standby Mode与ADC DMA模式测试备忘
推荐阅读最新更新时间:2024-11-02 10:55