打印
[应用方案]

在M451上移植嵌入式GUI之ugfx

[复制链接]
4023|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
落叶行健ywm|  楼主 | 2017-3-17 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很久以前就在M451上用Freertos8.1了,但是gui一直用的ZLGGUI,一直没改进。最近空闲下,花了两天搞定了uGFX的移植工作。
国内ugfx用的估计很少,以至于查资料只有开源官网,其它没有任何资料,只能根据自己的经验来移植了。

第一步:实现基本的底层驱动。
我用的是ssd1306这一款12864的oled。spi接口。主要实现底层接口函数。
初始化函数:
void OLED_InitHard(void);
写命令函数:
void OLED_WriteCmd(u8 cmd);
写数据函数:
void OLED_WriteData(u8 dat)


第二部:拷贝ugfx源码到工程文件。然后实现基层接口函数:
void init_board(GDisplay *g);

void post_init_board(GDisplay *g) ;

void setpin_reset(GDisplay *g, bool_t state);

void acquire_bus(GDisplay *g) ;

void release_bus(GDisplay *g) ;

void write_cmd(GDisplay *g, uint8_t cmd);

void write_data(GDisplay *g, uint8_t* data, uint16_t length);

其实主要就实现三个函数:
void init_board(GDisplay *g);
void write_cmd(GDisplay *g, uint8_t cmd);
void write_data(GDisplay *g, uint8_t* data, uint16_t length);
主要就是用上面ssd1306的驱动函数按要求去填这些函数。没啥难度。

第二部:简单配置,编译挑错。
配置ugfconfig。h头文件,然后编译调错。这是一个耐心的过程,我也搞了一天多才把报错的问题一一解决。什么变量未定义,某些函数没有实现了等慢慢自己去实现就ok了。
其中四个函数要自己实现的:
void        gfxSleepMicroseconds(us)
{
        bsp_DelayUs(us);
}

void        gfxSleepMilliseconds(ms)
{
        bsp_DelayMS(ms);
}


void *gfxAlloc(u32 size)
{
        void *xxx;
        xxx=malloc(size);
        return xxx;
}

void gfxFree(void *ptr)
{
        free(ptr);
}



第四部:找源码里的例子进行验证。
在源码里有例子可以进行简单的画点,方框,字体等显示。




沙发
wahahaheihei| | 2017-3-17 16:24 | 只看该作者
µGFX is a lightweight embedded library for displays and touchscreens providing everything required to build a fully featured embedded GUI. The library is very small and fast because every unused feature is disabled and not linked into the finished binary.

使用特权

评论回复
板凳
wahahaheihei| | 2017-3-17 16:25 | 只看该作者
第一次听说这个,看起来非常拉轰,学习一下

使用特权

评论回复
地板
wahahaheihei| | 2017-3-17 16:29 | 只看该作者
看了一下,非常不错,正在学习。

使用特权

评论回复
5
cos12a| | 2017-7-6 12:27 | 只看该作者
开源的,可以研究一下.
而且还有个ugfx_studio很方便.

使用特权

评论回复
6
xixi2017| | 2017-7-6 19:22 | 只看该作者
漂亮,开源的通常做的都很好,很容易理解。

使用特权

评论回复
7
hugen| | 2017-7-9 11:01 | 只看该作者
中文字模怎么取?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:爱这个世界!

34

主题

713

帖子

18

粉丝