- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-04-30 07:46:22
荣誉版主
- 积分
- 2319
|
发表于 2024-3-14 20:53:13
|
显示全部楼层
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
喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
-
+2
楼主威武~
|