OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10372|回复: 32
打印 上一主题 下一主题

基于STM32H743之emwin的高级应用

[复制链接]

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
跳转到指定楼层
楼主
发表于 2019-11-13 20:22:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 candylife9 于 2020-12-29 21:09 编辑

关于emwin,原子哥例程都是比较基础的,主要讲的基础控件的用法。最近在一个项目上用emwin做了人机交互界面,还是有一些心得,想以原子哥的阿波罗开发板(STM32H743)+7寸屏做一个经验总结。其中会涉及到万国字体的制作和使用,自定义控件的制作和使用,图片硬解码显示,嗯,就差不多这些吧,后面想到再补充,哈哈。

捕获.JPG (59.53 KB, 下载次数: 228)

捕获.JPG
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-4-29
在线时间
14 小时
2#
发表于 2019-11-18 10:04:54 | 只看该作者
666666
回复 支持 反对

使用道具 举报

20

主题

129

帖子

0

精华

高级会员

Rank: 4

积分
759
金钱
759
注册时间
2014-8-14
在线时间
238 小时
3#
发表于 2019-11-18 15:09:18 | 只看该作者
来个界面图展示下
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
4#
 楼主| 发表于 2019-11-18 15:55:44 | 只看该作者
本帖最后由 candylife9 于 2019-11-18 16:07 编辑
Cindre鞡 发表于 2019-11-18 15:09
来个界面图展示下

图片涉及到公司的机密哈
回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
5#
发表于 2019-11-23 10:44:05 | 只看该作者
666楼主你是用的哪个版本的emwin?有开启DCache吗?原子的emwin例程没有开启DCache很多操作反应都很慢
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
6#
 楼主| 发表于 2019-11-23 11:17:10 | 只看该作者
yconnor 发表于 2019-11-23 10:44
666楼主你是用的哪个版本的emwin?有开启DCache吗?原子的emwin例程没有开启DCache很多操作反应都很慢

5.4的,开了dcache的。操作反应慢,其实瓶颈在SDRAM的带宽。
回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
7#
发表于 2019-11-23 13:41:00 | 只看该作者
candylife9 发表于 2019-11-23 11:17
5.4的,开了dcache的。操作反应慢,其实瓶颈在SDRAM的带宽。

你是移植的STcube里里面的那个STemWin_CM7_OS_wc16_ot_ARGB.a吗?我是移植的是5.44a版本且我用的4342的RGB屏,然后有问题的。
你看图中的这个我开启了DCache且在GUI_Init之前调用WM_SetCreateFlag(WM_CF_MEMDECV);然后就会出现这样糊掉的。而且这个logo显示的颜色是RB转换的。ListWheel中的字体颜色是的。但其它部分的颜色都是正常的。哪怕我直接把这个程序放到原子已移植好的例程中去也是一样的。
但我把创建标记:“储存设备”去掉就不会花屏了。不开启DCache也会好一些。我现在就好纠结啊。找不到问题所在。
你能把你移植好的模板给我一个吗?我用原子的方式安富莱的方式移植都试了不行。
我的ListWheel文件发上来给你试一下吧。看看在你那里是不是也会出现这样的问题。非常感谢。 WIDGET_ListWheel_old.rar (15.2 KB, 下载次数: 17)
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
8#
 楼主| 发表于 2019-11-23 15:40:11 | 只看该作者
yconnor 发表于 2019-11-23 13:41
你是移植的STcube里里面的那个STemWin_CM7_OS_wc16_ot_ARGB.a吗?我是移植的是5.44a版本且我用的4342的RG ...

.a和.lib我都用过,因为同样的程序,我用lib那个在mdk里编译出来,切换页面的时候屏幕偶尔会闪烁,找了好久没找到原因。后来就换了.a移植到cubeIDE下编译就没有问题了。你这个问题,我等下试试吧。
回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
9#
发表于 2019-11-23 15:53:20 | 只看该作者
candylife9 发表于 2019-11-23 15:40
.a和.lib我都用过,因为同样的程序,我用lib那个在mdk里编译出来,切换页面的时候屏幕偶尔会闪烁,找了好 ...

可以把你的移植好的模板给我借鉴一下吗?谢谢。
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
10#
 楼主| 发表于 2019-11-23 16:17:53 | 只看该作者
本帖最后由 candylife9 于 2019-11-23 16:22 编辑
yconnor 发表于 2019-11-23 15:53
可以把你的移植好的模板给我借鉴一下吗?谢谢。

我这里显示好像没有那个糊掉的现象,开启了WM_CF_MEMDEV的,两个listWheel都挺正常的。你可以看看是否显示屏有问题啊,用手指压一压排线的那个FPC。

006c7fa89a78be4e981f643b8dd73e0.jpg (96.77 KB, 下载次数: 263)

006c7fa89a78be4e981f643b8dd73e0.jpg
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
11#
 楼主| 发表于 2019-11-23 16:21:38 | 只看该作者
本帖最后由 candylife9 于 2019-12-2 18:39 编辑
yconnor 发表于 2019-11-23 15:53
可以把你的移植好的模板给我借鉴一下吗?谢谢。

这是我这边做的一个页面,但是代码涉及到公司的机密,不能流出去。
回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
12#
发表于 2019-11-23 16:51:33 | 只看该作者
candylife9 发表于 2019-11-23 16:17
我这里显示好像没有那个糊掉的现象,开启了WM_CF_MEMDEV的,两个listWheel都挺正常的。你可以看看是否显 ...

你这是用的什么板子啊。 安富莱的么?那肯定是我移植的哪里有问题了。你是怎么移植的啊?能不能指点一下?我这里通过安富莱的方法移植也不对。真是气人啊。应该不是硬件的问题最大的可能是我移植的问题。
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
13#
 楼主| 发表于 2019-11-23 17:04:03 | 只看该作者
我用的正点原子的阿波罗开发板,芯片是STM32H743.我把工程给你吧,基于正点原子的例程测试的。

HELPER_EWMIN.rar

4.48 MB, 下载次数: 115

回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
14#
 楼主| 发表于 2019-11-23 17:04:54 | 只看该作者
yconnor 发表于 2019-11-23 16:51
你这是用的什么板子啊。 安富莱的么?那肯定是我移植的哪里有问题了。你是怎么移植的啊?能不能指点一下 ...

我用的正点原子的阿波罗开发板,芯片是STM32H743.我把工程给你吧,基于正点原子的例程测试的。

HELPER_EWMIN.rar

4.48 MB, 下载次数: 47

回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
15#
发表于 2019-11-25 08:15:00 | 只看该作者
candylife9 发表于 2019-11-23 17:04
我用的正点原子的阿波罗开发板,芯片是STM32H743.我把工程给你吧,基于正点原子的例程测试的。

恩,好的。非常感谢你的帮助。不过我用的是.a的lib,你发我的这个移植程序我看了,不知道是不是由于操作系统的缘故还是lib没有优化的缘故,这个操作起来感觉慢很多(用手滑动ListWheel中的Item的时候)。.a的移植方式你也是基于原子的例程吗?

回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
16#
发表于 2019-11-27 13:15:01 | 只看该作者
楼主你好, 我看了一下这个代码里的处理,原子是开启了DCache,但是在MPU_Config里他仍然是关闭了DCache的。他在里面开启了Shareable。我在之前的哪个里面看到过这个Shareable好像也会导致不使用Cache.
而且SDRAM中他是开启了Shareable,Cacheable,Bufferable。这种配置也就是关闭DCache的。
可能我对某些地方的理解还不够深入吧。如果你有什么好的想法可以回复我一下。非常感谢。


如下图显示的是不使用DCache,可以看到显示的速度非常的慢的。
而这个图你可以看到显示速度还是非常的快非常的流畅的。





回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
17#
 楼主| 发表于 2019-11-27 17:13:40 | 只看该作者
yconnor 发表于 2019-11-25 08:15
恩,好的。非常感谢你的帮助。不过我用的是.a的lib,你发我的这个移植程序我看了,不知道是不是由于操作 ...

.a是给gcc编译器的用的库,我就是把例程换了个编译环境,然后把.lib的库换成gcc的.a。
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
18#
 楼主| 发表于 2019-11-27 17:21:02 | 只看该作者
yconnor 发表于 2019-11-27 13:15
楼主你好, 我看了一下这个代码里的处理,原子是开启了DCache,但是在MPU_Config里他仍然是关闭了DCache的。 ...

我不想详细的去看他的几个存储器属性了,但是找到了可能让你疑惑的地方,你可以参考下。

捕获.PNG (27.06 KB, 下载次数: 274)

捕获.PNG
回复 支持 反对

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
19#
发表于 2019-11-28 13:09:40 | 只看该作者
candylife9 发表于 2019-11-27 17:21
我不想详细的去看他的几个存储器属性了,但是找到了可能让你疑惑的地方,你可以参考下。

恩。好的,我看到了。谢谢!
回复 支持 反对

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-5-30
在线时间
19 小时
20#
发表于 2019-12-2 15:21:33 | 只看该作者
大大是否有使用串口呢?我使用串口中断沒几次就死机,您有使用串口的経过吗?
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
21#
 楼主| 发表于 2019-12-2 18:38:22 | 只看该作者
SuperWeiII 发表于 2019-12-2 15:21
大大是否有使用串口呢?我使用串口中断沒几次就死机,您有使用串口的経过吗?

串口,DMA,USB,还开了好几个定时器中断。
回复 支持 反对

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2019-5-4
在线时间
45 小时
22#
发表于 2019-12-26 10:52:42 | 只看该作者
不能提供进一部的信息吗
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
23#
 楼主| 发表于 2019-12-26 11:35:08 | 只看该作者
cockroachzzq 发表于 2019-12-26 10:52
不能提供进一部的信息吗

这段时间搁置暂停了
回复 支持 反对

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2019-10-21
在线时间
92 小时
24#
发表于 2019-12-29 14:32:14 | 只看该作者
请问一下,控件的位图C文件你是放在哪里呢,外部SRAM,还是图片存在flash,刷新会不会慢?
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
25#
 楼主| 发表于 2019-12-29 17:08:36 | 只看该作者
xm870408 发表于 2019-12-29 14:32
请问一下,控件的位图C文件你是放在哪里呢,外部SRAM,还是图片存在flash,刷新会不会慢?

不要转换为C文件,更不要直接存图片,而是转化为.dta,然后存外部FLASH。单片机上电后再取出.dta,加载到内存中。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2016-11-9
在线时间
6 小时
26#
发表于 2020-6-12 10:58:18 | 只看该作者
123456
回复 支持 反对

使用道具 举报

9

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2020-7-7
在线时间
113 小时
27#
发表于 2020-9-23 17:17:26 | 只看该作者
candylife9 发表于 2019-12-29 17:08
不要转换为C文件,更不要直接存图片,而是转化为.dta,然后存外部FLASH。单片机上电后再取出.dta,加载到 ...

大神有没有具体点的代码参考一下?
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
28#
 楼主| 发表于 2020-10-1 19:16:26 | 只看该作者
zxc199701 发表于 2020-9-23 17:17
大神有没有具体点的代码参考一下?

你是说那一部分?
回复 支持 反对

使用道具 举报

9

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2020-7-7
在线时间
113 小时
29#
发表于 2020-10-9 09:59:06 | 只看该作者
candylife9 发表于 2020-10-1 19:16
你是说那一部分?

就是.dta文件存外部FLASH,单片机上电后再取出.dta,加载到内存中。这个部分的代码
回复 支持 反对

使用道具 举报

39

主题

600

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1624
金钱
1624
注册时间
2017-7-17
在线时间
320 小时
30#
 楼主| 发表于 2020-10-13 21:08:16 | 只看该作者
zxc199701 发表于 2020-10-9 09:59
就是.dta文件存外部FLASH,单片机上电后再取出.dta,加载到内存中。这个部分的代码

代码很简单的,emwin有对应的函数可调用。你先把图片用emwin提供的工具转换成.dta,然后写个小程序,把.dta放到外部flash里面。在使用的时候,将.dta读到内存里面,然后通过emwin提供的API函数,将内存里的.dta转换为位图数据即可。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-7-13
在线时间
2 小时
31#
发表于 2020-11-25 21:49:26 | 只看该作者
求展示,O(∩_∩)O哈哈哈~
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-8-26
在线时间
2 小时
32#
发表于 2020-11-30 18:50:42 | 只看该作者
3333333
回复 支持 反对

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2019-9-4
在线时间
78 小时
33#
发表于 2020-12-18 17:58:57 | 只看该作者
应用起来就厉害了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-12-14 15:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表