找回密码
 立即注册
楼主: tzz***

【uGFX/GUI + uC/OS-II】 @STC32G;uGFX/GUI@STC32G裸机

[复制链接]

该用户从未签到

19

主题

519

回帖

1640

积分

荣誉版主

积分
1640
 楼主| 发表于 2024-3-14 11:16:19 | 显示全部楼层
uGFX/GUI @STC32G 移植成功了 !

接下来准备出两个版本, @STC32G裸机 + uGFX,  

                                      @STC32G-uCOSII + uGFX.
=== 不是说uGFX不支持uCOSII吗? 祼机能支持=啥O/S都能支持!

目前已验证部分内置字体, 简单画几何图形。
实验屏幕LCD为KS0108控制器的 LCD128*64,

虽然这个屏有点LOW, 但耐用,重要的是不用花钱,自己手上有
奉上效果图:
微信图片_20240314111232.jpg
@STC32G裸机 + uGFX2.9,  
@STC32G-uCOSII + uGFX2.9.  
资料整理中,耐心等待几天,详细的移植过程和代码整理好后一起发出。





回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1640

积分

荣誉版主

积分
1640
 楼主| 发表于 2024-3-14 20:53:13 | 显示全部楼层
截图202403162347579592.jpg
STC32G 移植最新版uGFX2.9 详细过程

1. 官网下载文档,uGFX2.9解压后,放在项目文件下,添加两个文件:
\ugfx_2.9\src\gfx_mk.c
\ugfx_2.9\drivers\gdisp\KS0108\gdisp_lld_KS0108.c  (跟据使用屏的控制器来选择)

2. uGFX提供了配制文件范例文件 \ugfx_2.9\gfxconf.example.h ,将其更名为 gfxconf.h  备用,等会就用这个配制文件.

3. uGFX提供了LCD硬件接口范例文件 \ugfx_2.9\drivers\gdisp\KS0108\board_KS0108_example.h
(跟据使用屏的控制器来选择) 将其更名为board_KS0108.h,备用。

4. 以上提到的三个目录在项目中添加头文件搜索目录,避免编译器找不到头文件报错。

5. 需改写 board_KS0108.h, 提供LCD底层驱动接口。本例中真正用到的函数只有4个,用不到的可删除。详情查看代码文件。
提示:大多数的屏控制器,uGFX都有提供一个接口范例,比如本例中的 board_KS0108_example.h ,
范本中的代码虽然不能适应你的硬件,但是思路表达的很清楚。按范本的思路去做自己的接口。

6. 跟据需求修改配制文件 gfxconf.h。配制选项比较多, 三言两语难以说明白,官网:http://wiki.ugfx.io  自行脑补。

7. 终于可以编译了, 一百多个error,几百个warning。有点夸张!

大部分时间都在处理编译error和warning。

罗列一部分编译报错及处理:

以下语句缺少分号,估计是故意,为了让移植者确认类型正确性性,加分号即可.

typedef signed   short                gI16
typedef unsigned short        gU16
typedef signed   short                gI16
typedef unsigned short        gU16

多处重复定义了数据类型,比如:
typedef gU8                   uint8_t;
typedef unsigned char   uint8_t;
保留一处即可

error C318: can't open file <stdbool.h>  无法打开这个文件,定义两个宏替代
#define        true        1
#define        false        0

关键字与变量名冲突:
    data、bool、bit,code, sbit, 等的变量命名与KeilC251编译器关键字冲突,因此data替换为_data_ ........逐个替换

error C25: 如下所示,不知为何源码中多了一个逗号,删除逗号即可。
GFXINLINE void KS0108_goto(GDisplay* g, )

关键字inline:KeilC251对inline的支持不好,头文件 gfxconf.h中可以配制不使用inline,但仍消除的不够彻底,遇这种情况,定位到文档,手动删除.

编译报警的处理:

warning C2   不适用编译器的预处理直接注销
warning C138  更改书写格式 如 (void)xxx;  更改后 if(xxx);
warning C46: storage class 'register' ignored  删除register关键字
warning C188: 跟据调用类型增加强制转换
warning C30: 解决方法:去除一个const关键字。

最后:uGFX是可裁剪的,当打开新的模块时,可能出现新的 error warning,无法一一列举,如果遇到可自行分析和处理。

项目代码放在1楼










1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1640

积分

荣誉版主

积分
1640
 楼主| 发表于 2024-3-15 08:51:08 | 显示全部楼层
STC32G 移植uGFX补充几点使用注意:

项目中需要加START251.A51edata区初始化为0, 因为uFGX定义的全局变量没有自己初始化。

u
GFX本身没有uCOS-II的选项支持。uCOSII的uGFX是用的祼机实现选项。
如果只在一个任务中操作
uGFX,则和祼机使用方法无异。
如果要在多个任务中操作
uGFX,需要把uGFX当作互斥资源来使用,即同一时刻只一个任务操作屏。
或者直接使用守护任务,把所有屏操作汇集到一个任务,集中处理

回复 支持 反对 送花

使用道具 举报

该用户从未签到

550

主题

9235

回帖

1万

积分

管理员

积分
13946
发表于 2024-3-16 23:58:44 | 显示全部楼层
荣誉版主 威武 !!!
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    昨天 08:51
  • 签到天数: 46 天

    [LV.5]常住居民I

    0

    主题

    83

    回帖

    352

    积分

    中级会员

    积分
    352
    发表于 2024-3-18 08:44:12 | 显示全部楼层
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    22 小时前
  • 签到天数: 54 天

    [LV.5]常住居民I

    0

    主题

    177

    回帖

    332

    积分

    中级会员

    积分
    332
    发表于 2024-3-18 11:28:27 | 显示全部楼层
    期待成功
    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    16 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    25

    主题

    708

    回帖

    1759

    积分

    金牌会员

    积分
    1759
    发表于 2024-3-18 13:00:10 | 显示全部楼层
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-24 15:31
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    7

    主题

    31

    回帖

    263

    积分

    中级会员

    积分
    263
    发表于 2024-3-19 10:23:10 | 显示全部楼层
    楼主辛苦!!!!!!!
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    14 小时前
  • 签到天数: 24 天

    [LV.4]偶尔看看III

    0

    主题

    34

    回帖

    214

    积分

    中级会员

    积分
    214
    发表于 8 小时前 | 显示全部楼层
    ST7920控制器用哪个

    点评

    ST7920有的,我见过,你去文件夹内找找看  发表于 7 小时前
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-29 23:02 , Processed in 0.086499 second(s), 63 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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