STM32F429DISCO与STemWin开发备忘

一、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很好很强大,完。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值