OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
楼主: Eric2013

uCGUI+uCOS(FreeRTOS或RT-Thread)+FatFs+USB+LwIP(UIP) RA8875 7寸图片欣赏(开源一个小应用)

  [复制链接]

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-25 09:21:04 | 显示全部楼层
回复 支持 反对

使用道具 举报

  离线 

12

主题

429

帖子

0

精华

高级会员

Rank: 4

积分
719
金钱
719
注册时间
2012-6-21
在线时间
57 小时
发表于 2012-10-25 09:27:48 | 显示全部楼层
回复【51楼】Eric2013:
---------------------------------
再次谢谢楼主。
呵呵。
回复 支持 反对

使用道具 举报

  离线 

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2012-5-27
在线时间
12 小时
发表于 2012-10-25 11:01:33 | 显示全部楼层
好强大啊!
回复 支持 反对

使用道具 举报

  离线 

77

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
786
金钱
786
注册时间
2012-5-26
在线时间
45 小时
发表于 2012-10-25 14:26:34 | 显示全部楼层
這個一般的 3寸能運行嗎?是否還要 7吋的?
回复 支持 反对

使用道具 举报

  离线 

19

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2012-9-7
在线时间
0 小时
发表于 2012-10-25 14:34:49 | 显示全部楼层
厉害!
回复 支持 反对

使用道具 举报

  离线 

77

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
786
金钱
786
注册时间
2012-5-26
在线时间
45 小时
发表于 2012-10-25 16:02:10 | 显示全部楼层
我用的是RA8875,综合性能比SSD1963要强.
(1)刷图片不快,用外部RAM刷,每秒能刷2帧就很不错了。 .......不會吧 RA8875

我還以為能 30
帧以上

但是我計算
800*480=384000(7寸)
32020170(秒/點)/384000
(7寸)=83.385帧

怎麼差那麼多?
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-25 16:42:24 | 显示全部楼层
回复【54楼】keyway:
---------------------------------
可以的,没问题
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-25 16:43:31 | 显示全部楼层
回复【56楼】keyway:
---------------------------------
刷颜色的话,RA8875有专门的指令,给个指令就刷完了,刷图片和普通的屏没什么区别。
回复 支持 反对

使用道具 举报

  离线 

77

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
786
金钱
786
注册时间
2012-5-26
在线时间
45 小时
发表于 2012-10-25 17:08:52 | 显示全部楼层
回复【58楼】Eric2013:
刷颜色的话,RA8875有专门的指令,给个指令就刷完了,刷图片和普通的屏没什么区别。
---------------------------------
我認為因該是讀取圖片時間太長
安X板使用 SRAM 很慢,如果改 iss61xxx因該刷更快
但是圖片因該放置在外部 flash 區域,所以讀取更慢
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-25 19:01:09 | 显示全部楼层
1.  是的,读取的慢是一方面。要是算上从SD卡读取的时间,1秒能刷一张就很不错了。
2.  还有一个原因就是FSMC的速度太慢,可以这么简单的来算一下,我不知道这么算是否正确
     IS61LVXXX                     速度  8,10,12ns
     EM681FV16AU-55LF        速度 55ns
     55ns 相当于 18MHz  而FSMC的速度能跑多少,能不能跑10MHz?
     
    以前测试过SPDF5420控制器的400*240 TFT屏,在UCGUI上面测试最高才800万点(偶尔才这么高,平时就是600万)
    800万点,简单的算一下也就是8MHz。
    
    EM681FV16AU-55LF  应该足够他用了。
    
回复 支持 反对

使用道具 举报

  离线 

509

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
132846
金钱
132846
注册时间
2010-12-1
在线时间
1247 小时
发表于 2012-10-25 19:55:56 | 显示全部楼层
回复【60楼】Eric2013:
---------------------------------
STM32F1的FSMC真不咋地...
5M的速度就不错了,还没8M。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

77

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
786
金钱
786
注册时间
2012-5-26
在线时间
45 小时
发表于 2012-10-25 20:55:47 | 显示全部楼层
回复【61楼】正点原子:
STM32F1的FSMC真不咋地...
5M的速度就不错了,还没8M。
---------------------------------
不會吧 STM32F103 FSMC 速度只有這樣...

http://www.amobbs.com/thread-3443136-1-1.html
STM32工作在72MHZ,FSMC写为3HCLK(24MHZ),读为5HCLK(14.4MHZ).扩展模式B.
如果超一點頻,因該還可以快一



回复 支持 反对

使用道具 举报

  离线 

20

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
发表于 2012-10-25 20:59:03 | 显示全部楼层

请教楼主一个问题:

            emWIN5.12 和 UCGUI3.9有什么区别? 都是图形处理的,看一下指令,几乎是一样的,是一个东西,两个名字?
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-25 21:30:16 | 显示全部楼层
回复【63楼】dong:
---------------------------------
emWin 是Segger公司的,
UCGUI  是Micrium公司的,
 
同样的东西,在不同的公司名下,叫的方式不一样
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-25 21:32:25 | 显示全部楼层
回复【62楼】keyway:
---------------------------------
外接的NORFLASH SRAM  RA8875都要用FSMC 速度要协调 要不切换还得重新设置,
所以就取最慢的那个作为标准。
回复 支持 反对

使用道具 举报

  离线 

509

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
132846
金钱
132846
注册时间
2010-12-1
在线时间
1247 小时
发表于 2012-10-25 22:10:03 | 显示全部楼层
回复【62楼】keyway:
---------------------------------
测试了,最快就是4.5Mhz左右的WR频率。
不知道是我配置问题还是什么,我用示波器测试了模式A,模式B,最快都是4.5M左右。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

20

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
发表于 2012-10-26 00:28:51 | 显示全部楼层
回复【64楼】Eric2013:
回复【63楼】dong: --------------------------------- emWin 是Segger公司的, UCGUI  是Micrium公司的,   同样的东西,在不同的公司名下,叫的方式不一样 
---------------------------------
原来如此。

十分感谢楼主,能够及时给予解答!
回复 支持 反对

使用道具 举报

  离线 

77

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
786
金钱
786
注册时间
2012-5-26
在线时间
45 小时
发表于 2012-10-26 20:59:01 | 显示全部楼层
回复【66楼】正点原子:
测试了,最快就是4.5Mhz左右的WR频率。
不知道是我配置问题还是什么,我用示波器测试了模式A,模式B,最快都是4.5M左右。
---------------------------------
我查一下,速度還可以更快写为2HCLK,读为4HCLK
另外 NORFLASH 與 SRAM不是可以分開定義讀寫時序嗎?雖然LCD與SRAM 共用 FSMC
但是 LCD 速度一定比 SRAM 快很多..
回复 支持 反对

使用道具 举报

  离线 

509

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
132846
金钱
132846
注册时间
2010-12-1
在线时间
1247 小时
发表于 2012-10-26 21:13:21 | 显示全部楼层
回复【68楼】keyway:
---------------------------------
理论上是这样的,实际呢?
STM32吹IO速度50M,你能输出50M的方波?
我实测就是4.5M,上不去了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

509

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
132846
金钱
132846
注册时间
2010-12-1
在线时间
1247 小时
发表于 2012-10-26 21:13:53 | 显示全部楼层
如果你有代码,我可以免费帮你测试下,呵呵.我也想知道是我代码问题,还是STM32本身就那样了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

  离线 

11

主题

264

帖子

0

精华

高级会员

Rank: 4

积分
638
金钱
638
注册时间
2011-10-19
在线时间
126 小时
发表于 2012-10-26 22:02:51 | 显示全部楼层
万能的主啊,哥们到神马时候才有这么NB啊。。
哥们的小店:http://shop103291259.taobao.com
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-29 11:53:24 | 显示全部楼层
两个可供参考的资料一个是armfly开发板的,还有个是amo论坛的。
1. armfly开发板的比较好理解,而且简单易用,非常推荐,比如按键检测,触摸检测,USB串口都可以用。
2. amo电子论坛的这个搞的就有点复杂了,我将其简化实现了,可以实现同样的功能

修改记录
3. 如果使用UCOS的话(不使用的话,将内存管理函数移植出来),直接使用自带的内存管理
    就可以实现,貌似不用搞成环形队列,

4. 串口发送以前计算需要的内存块数,然后申请内存块,启动DMA。当然也需要一个指针数
    组来指向申请的内存块。

5. DMA每用完一个内存块,换给内存分区,内存管理函数可以将其自动加入到空闲块里面,
    然后更新空闲块链表。
这样内存块就能及时的释放,从而得到有效的利用。

  所以我觉得使用UCOS的内存管理函数的话,直接用一个指针数据代替环形队列就可以了。

STM32串口驱动(拼音检索测试通过)(环形队列+内存动态分配+DMA).rar

816.5 KB, 下载次数: 4666

Ex014-串口FIFO例程_2个RS232和1个RS485(2010-09-05).rar

295.63 KB, 下载次数: 1200

回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-29 11:55:08 | 显示全部楼层
2012.10.29:
增加串口FIFO+DMA(2个串口+1个485)
1. 参考资料见71楼。
2. 基于GUI的串口调试助界面手还在制作中。
3. 修改RTC不能正常启动的BUG。
4. 修改PS2鼠标有时出现死机的现象。
5. 后面的时间有点紧了,以后有时间就做做。
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-10-29 12:18:07 | 显示全部楼层

STM32串口驱动(拼音检索测试通过)(环形队列+内存动态分配+DMA)

http://www.amobbs.com/thread-4516795-1-1.html
回复 支持 反对

使用道具 举报

  离线 

77

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
786
金钱
786
注册时间
2012-5-26
在线时间
45 小时
发表于 2012-10-31 11:29:35 | 显示全部楼层
樓主是否能發一個標準 3.0 寸的?
大部份的人,因該都沒有 RA8875....
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-1 10:24:57 | 显示全部楼层
回复【75楼】keyway:
---------------------------------
这几天我就会弄一个的,板子用armfly新做的核心板 103VET6 和 407VGT6
屏的话用RA8875驱动的7寸,4.3寸,还有个SPFD5420驱动的3寸屏。
核心板还没到,到了的话,我做一个在论坛公布。
回复 支持 反对

使用道具 举报

  离线 

77

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
786
金钱
786
注册时间
2012-5-26
在线时间
45 小时
发表于 2012-11-1 11:04:24 | 显示全部楼层
回复【76楼】Eric2013:
---------------------------------
armfly 又开始做新板了 407VGT6? 年前好像就听说了,但是始终到年底没看过新产品.
可惜使用的是 407...为什么不是 417?如果能随时互换CPU是最好,必竟 STM32 每年都在更新产品.






回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-1 11:29:39 | 显示全部楼层
回复【77楼】keyway:
---------------------------------
不是, 这个是核心板 ,为了配套RA8875的屏做的,这个核心板支持407VGT6和103VET6互换的。

和那个要做的F4开发板没有关系。F4的板子好像是用407IGT6吧。

回复 支持 反对

使用道具 举报

  离线 

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2012-9-13
在线时间
14 小时
发表于 2012-11-1 12:59:35 | 显示全部楼层
厉害...  楼主是业余做的吗?..   
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-1 16:19:37 | 显示全部楼层
回复【79楼】郭震2009:
---------------------------------
有时间了就做一下。
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-2 21:08:52 | 显示全部楼层
2012.11.02:
1. 增加汉字显示,支持任意字体,任意大小
2. 可以将字体存到外部FLASH,也可以存到SD卡,(在此对 “洋洋kan世界” 兄弟表示感谢
回复 支持 反对

使用道具 举报

  离线 

2

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2012-11-1
在线时间
0 小时
发表于 2012-11-2 21:19:44 | 显示全部楼层
太厉害了!顺便问一下RA8875能控制5寸TFT显示屏吗?
回复 支持 反对

使用道具 举报

  离线 

12

主题

429

帖子

0

精华

高级会员

Rank: 4

积分
719
金钱
719
注册时间
2012-6-21
在线时间
57 小时
发表于 2012-11-3 11:28:14 | 显示全部楼层
回复【81楼】Eric2013:

2012.11.02:
 1. 增加汉字显示,支持任意字体,任意大小
2. 可以将字体存到外部FLASH,也可以存到SD卡,(在此对 “洋洋kan世界” 兄弟表示感谢)

---------------------------------
在那个例程里?谢谢。
呵呵。
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-3 13:09:50 | 显示全部楼层
回复【82楼】千年耗子屎:
---------------------------------
支持 最大支持800x480的分辨率
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-3 13:10:50 | 显示全部楼层
回复【83楼】 无名氏 :
---------------------------------
按这个方法就可搞定
http://www.openedv.com/posts/list/9736.htm?fromAll=0
回复 支持 反对

使用道具 举报

  离线 

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2012-11-4
在线时间
0 小时
发表于 2012-11-4 16:00:49 | 显示全部楼层
请教楼主,我今天调试ds18b20的驱动,不带以太网和rtos的情况下是好用的,添加了lwip和freertos时操作ds18b20就卡死了。
细看代码发现ds18b20驱动的延时用的是八分频,而freertos移植的时候设置为10ms产生一个systick中断。
这两者明显有冲突,怎么解决,能给点建议吗?
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-5 11:48:42 | 显示全部楼层
回复【86楼】embeddedman:
---------------------------------
我用的是原子提供的delay_us() 很好用,系统也稳定。
你也可以看一下。
回复 支持 反对

使用道具 举报

  离线 

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2012-11-4
在线时间
0 小时
发表于 2012-11-5 16:00:10 | 显示全部楼层
回复【81楼】Eric2013:
2012.11.02:1. 增加汉字显示,支持任意字体,任意大小2. 可以将字体存到外部FLASH,也可以存到SD卡,(在此对 “洋洋kan世界” 兄弟表示感谢)
---------------------------------
Hello,Eric2013 兄,任意字体任意大小,这是怎么做的啊?
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-5 16:15:11 | 显示全部楼层
回复【88楼】embeddedman:
---------------------------------
加载各种大小,各种样子的的点阵字体啊,然后再UCGUI上显示就可以了。
回复 支持 反对

使用道具 举报

  离线 

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2012-11-4
在线时间
0 小时
发表于 2012-11-5 16:28:45 | 显示全部楼层
回复【89楼】Eric2013:
---------------------------------
回复【89楼】Eric2013:
回复【88楼】embeddedman: --------------------------------- 加载各种大小,各种样子的的点阵字体啊,然后再UCGUI上显示就可以了。
---------------------------------
还是点阵是吧?STM32上有没有研究过用矢量字库啊?
回复 支持 反对

使用道具 举报

  离线 

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2012-11-4
在线时间
0 小时
发表于 2012-11-5 16:46:58 | 显示全部楼层
刚才看了,只有v4以后的ucgui版本才支持矢量字库,可是v4版本到哪去下载啊?
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-5 18:09:46 | 显示全部楼层
回复【90楼】 embeddedman :
---------------------------------
       点阵汉字的原理同时也决定了它的缺点, 他不具有放大特性, 因为它的显示是基于被定死的点阵,
放大后, 会产生明
显的锯齿,非常的难看, 当然, 可以进行一些光滑处理, 但基本上没有多在的改观.但
点阵汉字简易, 对于复杂汉字, 它比矢
量显示汉字法更快.

矢量显示是基于记录汉字的笔化的. 对于简单的汉字它比较占优势, 容易放大处理. 但对于复杂
的汉字, 表示起来, 则笔化太多..复杂.

回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-5 18:18:11 | 显示全部楼层
回复【91楼】embeddedman:
---------------------------------
       用emWin啊 现在都到5.18了,功能更加的强劲。移植比较的麻烦,一些ili9xxx的屏比较的好移植,网上有一些例子,
没有移植例子的屏,移植起来能把人郁闷死,基本上市面上常见的驱动芯片,emWin都有一个驱动文件,当然他们驱动差
不多的都对应一个驱动文件。
    以前弄SPFD5420的驱动,移植的时候才发现,它对应的驱动文件里面什么都没有。搞了两天没成功,就放弃了。
回复 支持 反对

使用道具 举报

  离线 

12

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-9-18
在线时间
0 小时
发表于 2012-11-6 12:04:31 | 显示全部楼层
LZ  我这几天在战舰上移植UCGUI,LCD驱动是用原子的程序,移植编译都通过之后,我就调用了一个初始化函数(背景色为白色),下载程序进去之后,屏幕白了一下就马上黑屏,这是什么情况?已经困扰我两三天了。。
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-6 12:46:36 | 显示全部楼层
回复【94楼】hua290565456:
---------------------------------
把你的程序 贴上了 我看看
回复 支持 反对

使用道具 举报

  离线 

20

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2012-3-15
在线时间
5 小时
发表于 2012-11-6 13:23:03 | 显示全部楼层
使用STM32+UCOS+UCGUI实现MP3设计,遇到个问题,好久都没有解决,现在开了两个对话框,一个对话框是主界面,一个是MP3显示界面,想实现两个界面的切换,现在两个界面可以切换,但是切换几次画面就会卡死,只能把ucgui 的动态内存分配调大点,但是也是多几次也会画面卡死,不知道该如何解决这个问题
————————————————————————————————————————————————————————————
/*********************************************************************
*
*       显示主界面窗口
*这个是一个界面的主函数
**********************************************************************
*/
void display_menu(void) { 
    GUI_Init();
    WM_SetDesktopColor(GUI_WHITE);      /* Automacally update desktop window */
    WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
}

/*********************************************************************
*
*       显示mp3窗口
*这是第二个界面的主函数
**********************************************************************
*/
void display_mp3(void) { 
        GUI_Init();
    WM_SetDesktopColor(GUI_WHITE);      /* Automacally update desktop window */
    WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
}

/*********************************************************************
*
*       Dialog callback routine
*/
static void _cbCallback(WM_MESSAGE * pMsg) 
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId) 
    {
        case WM_INIT_DIALOG:
            InitDialogMenu(pMsg);
            break;
        case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) 
            {
                case GUI_KEY_ESCAPE:
                    GUI_EndDialog(hWin, 1);
                    break;
                case GUI_KEY_ENTER:
                    GUI_EndDialog(hWin, 0);
                    break;
            }
            break;
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc); 
            NCode = pMsg->Data.v;        
            switch(NCode) 
            {
                                case WM_NOTIFICATION_RELEASED:
                                        if(Id == GUI_ID_BUTTON0)//系统设置        
                                        {
                                                  
                                        }
                                        else if(Id == GUI_ID_BUTTON1)//录音菜单        
                                        {        
        
                                        }
                                        else if(Id == GUI_ID_BUTTON2)//USB菜单        
                                        {

                                        }
                                        else if(Id == GUI_ID_BUTTON3)//MP3菜单        
                                        {
                                                display_mp3();//这里切换到另一个界面                                        }                                                                                        
                                        break;
                                default: 
                                  break;
            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}
另一个函数和上面的相同,也是一个按钮切换到另一个界面
        else if(Id == GUI_ID_BUTTON6)//返回         
                                        {
                                                display_menu();                                        }

只能切换几次,就会卡死界面
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-6 20:19:31 | 显示全部楼层
回复【96楼】hooddas:
---------------------------------
问题一:为什么这三个函数重复的初始化,没必要的。
           GUI_Init();
           WM_SetDesktopColor(GUI_WHITE);      /* Automacally update desktop window */
           WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
问题二:两个任务的阻塞对话框里面调用的怎么都一样
           GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
回复 支持 反对

使用道具 举报

  离线 

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
 楼主| 发表于 2012-11-10 13:24:55 | 显示全部楼层
个东西字前段时间搞过,由于驱动有所改动,还是花了三个晚上(10点到凌晨3),
白天还得搞别的,只能晚上搞了,感觉调试起来还是有一些大大小小的问题,暂时先
放一放,熬夜有点累,后面再弄,有点忙不过来了。

硬件:STM32F103VET6核心板
           CPU : STM32F103VET6/ LQFP100     (可以换 STM32F407VGT6)
           RS232串口1个
           8MB 串行SPI1个
           4.3寸和7寸屏接口
           3个按键 1个摇杆,4个LED灯
软件:MDK4.23

功能介绍(基本能利用的资源都用上了):
1. 从SD卡读取图片作为背景,然后做三个个图标,暂时只用了两个图标。
2. 图标一实现SD卡U盘的连接和断开,以及SPI FALSH的简单测速,
3. 图标二实现官方的DEMO,运行完,回到主界面。
4. 摇杆用于鼠标移动。
5. 蜂鸣器用于按键和控件按下时鸣响。
6. 按键一用于打印系统信息,按键二用打印任务堆栈使用情况,按键三用屏幕截图

7. 串口用的是5个串口FIFO,支持RS485
8. GUI的底层全部采用硬件2D绘图
9. 暂时用4.3寸调试的,7寸的话,要改写触摸校准。
10.SPI FLASH驱动支持 SST25VF016B 、 MX25L1606E 和 W25Q64BVSSIG
11. TFT驱动支持 SPFD5420A、OTM4001A、R61509V  RA8875


调试中存在的BUG(有时间了修正一下,暂时还没解决):
1. SD卡U盘,读取数据没问题,写入数据容易存在错误。
2. UCGUI的底层画线函数,用硬件2D绘制,有时存在错误,矩形填充不存在问题,可以使用。
3. 现在FatFS的读取不能超过512字节,不知道哪里出问题,这个程序在armfly的V2,V3开发板上
    运行是没问题,区别就是RA8875的驱动不是用的我用的那个,FATFS的写数据存在问题,所以
    截图功能就不能用了,后面首先把这个问题解决一下。
4. 这个问题也不算是BUG,触摸和TFT屏都是使用fsmc,所以要解决资源共享的问题,我这里没有采用
    信号量的方法(推荐这种,简单有效),armfly例程里面是采用的在每个底层函数里面设置一个变量,
    也起到一个互斥信号量的作用,为了不更改驱动函数,我也采用这种方法,实测也可以的。
   
    这些 BUG已经修正
  




















F103 UCGUI 4.3寸.zip

4.47 MB, 下载次数: 5468

回复 支持 反对

使用道具 举报

  离线 

12

主题

429

帖子

0

精华

高级会员

Rank: 4

积分
719
金钱
719
注册时间
2012-6-21
在线时间
57 小时
发表于 2012-11-23 13:43:16 | 显示全部楼层
帮顶。。。。呵呵呵。
呵呵。
回复 支持 反对

使用道具 举报

  离线 

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2012-11-23
在线时间
0 小时
发表于 2012-11-23 14:06:46 | 显示全部楼层
楼主强大。
回复 支持 反对

使用道具 举报

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

本版积分规则




关闭

必看,必学:"原子哥”力荐上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-9-23 16:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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