分享
收藏
返回
lingxin-yuhe
关注
私信
[文章]
【沁恒微CH32V307评估板试用体验】移植开源u8g2,实现动态图像显示
沁恒微电子
ch32v307
RISC-V
开发板试用
u8g2
前言:
看到坛友发了关于u8g2移植的帖子,这是啥,于是马上来学习一下,感谢坛友的分享。从失败到成功,一次一次地实验,终于成功了。
首先,
了解u8g2是什么?网上查了一下,这个资料也不少。大家可以自行查看,我主要看了一篇移植u8g2单色图形库驱动OLED。然后参考坛友硬件I2C移植U8g2——OLED:SSD1306这篇帖子
。
其次,
搭建CH32V307关于u8g2的工程,我还是从I2C_7bit_Mode这个例程出发,修改程序,提取增加代码。具体步骤如下:
下载u8g2开源工程代码,如图1所示。
图1 下载github开源代码
将
I2C_7bit_Mode拷贝一份放入同级目录下,重新命名一下I2C_7bit_Mode-demo。
拷贝u8g2-master目录下的csrc目录到新建的I2C_7bit_Mode-demo目录下,如图2和图3所示。
图2 拷贝csrc
图3 最后代码目录
第三步
,删除u8g2的csrc目录下与ssd1306无关的代码,减少代码量。
csrc目录下u8x8_d_xxxxx_xxxx_xxx.c类型的文件中只保留u8x8_d_ssd1306_128x64_noname.c这个文件,其他文件都保留。如图4所示。
图4 保留的文件
u8g2_d_setup.c只保留u8g2_Setup_ssd1306_i2c_128x64_noname_f这个函数,其他都删掉即可。如图5所示。
图5 d-setup文件修改
u8g2_d_memory.c只保留u8g2_m_16_8_f这个函数,如图6所示。
图6 d-memory修改
第四步
,修改增加代码,参考坛友刘建华帖子自己进行整合。工程代码中User目录如图7所示。
图7 User目录下修改增加
代码不贴了,附录有代码。贴一下main函数吧,如下所示。
#include "debug.h"
#include "u8g2.h"
#include "oled.h"
int main(void)
{
u8g2_t u8g2;
int nTemp = 0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%drn",SystemCoreClock);
printf("This is printf examplern");
u8g2_Setup_ssd1306_i2c_128x64_noname_f(&u8g2, U8G2_R0, u8x8_byte_hw_i2c,u8x8_gpio_and_delay);//初始化u8g2结构体
u8g2_InitDisplay(&u8g2); // 根据所选的芯片进行初始化工作,初始化完成后,显示器处于关闭状态
u8g2_SetPowerSave(&u8g2, 0); // 打开显示器
u8g2_ClearBuffer(&u8g2);
while(1)
{
u8g2_ClearBuffer(&u8g2);//清空缓冲区的内容
if(++nTemp>=32) nTemp=1;
u8g2_DrawCircle(&u8g2, 64, 32, nTemp, U8G2_DRAW_ALL);//画圆
u8g2_DrawCircle(&u8g2, 32, 32, nTemp, U8G2_DRAW_ALL);//画圆
u8g2_DrawCircle(&u8g2, 96, 32, nTemp, U8G2_DRAW_ALL);//画圆
u8g2_SendBuffer(&u8g2);//绘制缓冲区的内容
}
}
第五
,总结一下:开始将csrc目录拷贝到了User目录下,应该也可以了,但需要修改包含各种,改了好几遍都不行,总是提示各种错误,后面直接拷贝到与User同目录下了,这次修改一下错误的代码,编译成功了。对MSR还没太多的研究,因此只能用最笨的方法试 。
I2C_7bit_Mode-demo.zip
(2022-6-24 12:16 上传)
14.92 MB, 下载次数: 28
回帖
(7)
lingxin-yuhe
2022-6-24 12:26:39
最后一字是“试”,经过不停的尝试肯定有个解决办法。
最后一字是“试”,经过不停的尝试肯定有个解决办法。
2
dianzi:
帮你修改了~
lingxin-yuhe
回复
dianzi:
谢谢啦,就像小蜜蜂不停地工作。
dianzi
2022-6-24 17:41:26
这个动态效果很丝滑啊
这个动态效果很丝滑啊
1
lingxin-yuhe:
用的u8g2,大家说好用,我就拿来测试一下。感觉不错。
华仔stm32
2022-8-13 23:07:42
图像很丝滑,不错不错!
图像很丝滑,不错不错!
1
硬件工程师1
2023-3-10 09:39:50
这个可以对标STM32?
这个可以对标STM32?
2
lingxin-yuhe:
我觉得可以,U8G2是个开源的库,拿到STM32上用应该也可以。后面我试一下,再来明确答复您。
lingxin-yuhe:
因手里没stm32的开发板,目前还做不了测试。刚刚搜了一下stm32 u8g2好多电子爱好者已经完美适配过了,您可以搜一下,进行测试。
更多回帖
rotate(-90deg);
回复
我也要说两句
回帖
回复评论
相关经验
【
沁
恒
微
CH32V307
评估
板
试用
体验】
U8g2
电子时钟
【
沁
恒
微
CH32V307
评估
板
试用
体验】
CH32V307
初之体验
【
沁
恒
微
CH32V307
评估
板
试用
体验】
CH32V307
的开箱
【
沁
恒
微
CH32V307
评估
板
试用
体验】基于
CH32V307
的ADC实验
【
沁
恒
微
CH32V307
评估
板
试用
体验】+初识
CH32V307
【
沁
恒
微
CH32V307
评估
板
试用
体验】初识
CH32V307
【
试用
报告】
沁
恒
CH32V307
评估
板
体验:定时器使用基础
国产MCU
沁
恒
微
CH32V307
开发
板
试用
体验
【
沁
恒
微
CH32V307
评估
板
试用
体验】硬件I
2
C
移植
U8g2
——OLED:SSD1306
【
沁
恒
微
CH32V307
评估
板
试用
体验】
u8g2
移植
,点亮SSD1306屏,SW IIC接口
×
长按上方图片保存到相册
复制链接
长按二维码打开
发帖