【GD32F427开发板试用】使用Arm-2D显示电池电量

news2025/3/14 23:59:17

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:boc

【虽迟但到】

由于快递的原因,11月份申请的,12月1日才收到GD32F427开发板。虽然姗姗来迟,但也没有减少对他的期待。这不,收到板子后,赶紧焊接插针,连接SPI屏幕,如下图

连接好后,马不停蹄地赶快点亮LCD屏幕,并移植好Arm-2D,显示一个电池电量的小demo,效果演示如下:

https://www.bilibili.com/video/BV1fg411n7wy​www.bilibili.com/video/BV1fg411n7wy

怎么样,效果还可以吧。

【Arm-2D简介】

首先,我们简单介绍一下Arm-2D是什么。他是arm公司开源的2d图形加速引擎,由于它支持pfb技术,所以Arm-2D对小资源单片机(flash<64K,ram<32K)的支持也非常好.
当然了,他的移植也非常简单,大家可以看下面这个教程
Arm-2D移植教程
当然,Arm-2D的更多玩法,大家也可以参考这个
【玩转Arm-2D】系列文章

Arm-2D的开源仓库如下:
https://github.com/ARM-softwa….

【实现电池人】

移植好Arm-2D后,我们先把默认的显示关掉,如下图所示

并在main函数中初始化我们自己的scene,如下
arm\_2d\_scene0\_init(&DISP0\_ADAPTER);
这样我们就可以显示自己的界面了,下面我们就开始绘制【电池人】了。
首先,我们找到__pfb_draw_scene0_handler函数,如下图

并在此函数中进行绘制,我们在看一下电池小人,如下

,这个炫酷的橘黄色电池控件居然是Arm-2D自带的,他的调用也很简单,如下
`//arm_2d_align_centre( ptTile->tRegion, 100, 130) {

battery_gasgauge_nixie_tube_show(   
        &this.tBatteryNixieTube, 
        ptTile, 
        &__centre_region, 
        this.hwGasgauge,
        this.tStatus,
        bIsNewFrame);

//他的原型如下
void battery_gasgauge_nixie_tube_show(

battery_nixie_tube_t *ptThis,
const arm_2d_tile_t *ptTile,
const arm_2d_region_t *ptRegion,
uint16_t hwGasgauge,
battery_status_t tStatus,
bool bIsNewFrame)`

我们简单介绍一下这个battery_gasgauge_nixie_tube_show函数
前两个参数我们不展开讲解了,他主要是Arm-2D自己用的,

  • 第3个参数ptRegion,就是电池在屏幕中显示的位置,如下图

  • 第4个参数hwGasgauge,就是要显示的电量,他的取值范围为0~999,也就是它除以10就是我们视频中显示的电池电量。
  • 第5个参数tStatus,就是指电池是充电状态还是放电状态(它只有两个值:BATTERY_STATUS_CHARGING和BATTERY_STATUS_DISCHARGING)。
  • 最后一个参数也是Arm-2D自己用的,我们也不展开讲了,感兴趣大家可以参考上面关于Arm-2D的文章。

好,电池我们就绘制完成了,接下来我们再把电池电量的百分比显示出来,如下:

//显示电量

                arm_lcd_text_set_draw_region(&__bottom_centre_region);
    arm_lcd_text_set_colour(GLCD_COLOR_RED, GLCD_COLOR_BLACK);
    arm_lcd_text_location(0,0);
    arm_lcd_printf("%02d", this.hwGasgauge / 10);

直接调用arm_lcd_printf就可以了。

那两只眼睛是怎么弄的呢?
它就更简单了,其实就是绘制了两个矩形,如下

myRegion.tSize.iWidth = 14;
    myRegion.tSize.iHeight = 3;
    arm_2d_fill_colour(ptTile, &myRegion, GLCD_COLOR_GREEN);

    myRegion.tLocation.iX += 17;
    arm_2d_fill_colour(ptTile, &myRegion, GLCD_COLOR_GREEN);

设置一个矩形区域,填充绿色就可以了,简单吧。

不对啊,眼睛明明是一个椭圆,然后变成一个横线啊???
哈哈,其实椭圆也很简单,这个就是用到了Arm-2D提供的圆角矩形函数draw_round_corner_box,如下

//if(time < 7){                                                   
    myRegion.tLocation.iY -= 2;
    myRegion.tSize.iWidth = 14;
    myRegion.tSize.iHeight += 4;
    //arm_2d_fill_colour(ptTile, &myRegion, GLCD_COLOR_GREEN);
    draw_round_corner_box(ptTile,&myRegion,GLCD_COLOR_GREEN,
            150,bIsNewFrame);

    myRegion.tLocation.iX += 17;
    //arm_2d_fill_colour(ptTile, &myRegion, GLCD_COLOR_GREEN);
    draw_round_corner_box(ptTile,&myRegion,GLCD_COLOR_GREEN,
            150,bIsNewFrame);

然后在定义一个时间变量time,根据不同的时间进行切换就实现了眨眼睛的效果,怎么样,简单吧、。

到这里我们的电池小人就制作完成了。

整个GD32F427的工程文件和Arm-2D移植好的程序我也放到了网盘,供大家参考,如下

最后

衷心祝愿极术社区越办越好,也祝国产单片机GD32也越来越好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

易记笔记-Ubuntu升级软件包及注意事项

APT介绍 APT是一个命令行实用程序&#xff0c;用于在Ubuntu系统中安装、删除、更新软件包。 注意&#xff0c;Ubuntu里面的APT工具需要与常说的APT攻击区分开。 APT攻击&#xff0c;即高级可持续威胁攻击,也称为定向威胁攻击&#xff0c;指某组织对特定对象展开的持续有效的攻…

CSDN每日一练:寻因找祖

题目名称&#xff1a;寻因找祖 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述 寻找因子个数为n的最小整数x. 输入描述&#xff1a; 输入整数n。(1<n<1000) 输出描述&#xff1a; 输出x。 示例 示例1 输入 3 输出 4 提示 无 猛一看&#xff0c;这个题目很…

Node学习1

Node 加载模块&#xff1a; 加载内置模块和第三方模块直接require&#xff08;名字&#xff09; 自定义模块需要加路径 require&#xff08;&#xff09;加载模块时候会自动调用被加载模块代码require永远以module.export所指向的对象为准 模块作用域&#xff1a; 和函数作用…

QT之事件系统

QT之事件系统1. 概述2. 事件的传递3. 事件类型4. 事件处理与事件过滤5. 自定义事件5.1 Demo6. 发送事件7. 参考1. 概述 在QT中&#xff0c;事件均派生自QEvent抽象类&#xff0c;事件可以由任何派生自QObject的子类实例接收和处理。它们与widget关联性极强。 2. 事件的传递 …

有了这 4 款工具,老大再也不怕我写烂SQL了

一、mysqltuner.pl 是 MySQL 一个常用的数据库性能诊断工具&#xff0c;主要检查参数设置的合理性包括日志文件、存储引擎、安全建议及性能分析。针对潜在的问题&#xff0c;给出改进的建议。是 MySQL 优化的好帮手。 在上一版本中&#xff0c;MySQLTuner支持 MySQL / MariaD…

LightningChart JS v4.0.0 and LightningChart NET

LightningChart JS v4.0.0 引入了新的 DataGrid 组件、全面的折线图类型和视觉主题。2023 年 2 月 9 日 - 16:05 新版本特征 下一代色彩主题&#xff1a; 暗金。网络空间。绿松石六角形。光。光自然。自定义 - 创建您自己的下一代颜色主题。新的 DataGrid 组件 DataGrid 组件是…

linux基本功系列之tar命令实战

文章目录前言一. tar命令介绍二. 语法格式及常用选项三. 参考案例3.1 仅打包不压缩3.2 打包后使用调用压缩命令进行压缩3.3 列出文件的内容3.4 追加文件到tar命令中3.5 释放文件到指定的目录四 . 各种压缩方式的比较总结前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓…

开学季该准备哪款电容笔?2023平替电容笔推荐

如今&#xff0c;电容笔越来越受欢迎&#xff0c;性能也越来越好。所以&#xff0c;如何选择一款具有高性价比的电容笔就成了人们的重点关注。现在&#xff0c;越来越多的人开始使用电容笔&#xff0c;所以&#xff0c;人们都在寻求更好、更经济的电容笔。所以&#xff0c;什么…

21省人均GDP超过1万美元,北京以19.01万元继续稳居榜首

在过去的2022年&#xff0c;各省都交了优秀的“成绩单”&#xff0c;各省的经济强弱即将揭晓。广东与江苏的GDP均超过12万亿元&#xff0c;是31省中超过12万亿元的两个城市&#xff0c;GDP分别为12.91万亿元与12&#xff0c;18万亿元。山东省、浙江省、河南省紧随其后&#xff…

linux yum安装卸载jdk8

1>安装1 yum -y list java* 列出jdk列表2 yum install -y java-1.8.0-openjdk-demo.x86_64&#xff08;安装这个java -version 正常显示&#xff0c;但是javac不能用&#xff0c;因为yum install java 只是安装了java的运行时环境&#xff0c;并不支持编译&#xff0c;安装成…

如何在线批量压缩PDF

PDF格式文档是我们日常比较常用的格式文档之一&#xff0c;那么有什么方法可以减小PDF大小呢&#xff1f;如果PDF比较多是否能批量处理呢&#xff1f; 首先打开浏览器搜索speedpdf就能找到这个在线压缩工具&#xff0c;点击进入后选择PDF压缩可以。如果需要手机和电脑端同步压…

react中Modal组件与openlayers地图实例化在feature要素绘制与清除等场景中存在的bug

在有地图的实际业务中会有一个经常的场景&#xff0c;那就是地图的初始化&#xff0c;一般如下&#xff1a; useEffect(() > {initMap();}, [visible]);我们经常利用Modal组件中open属性状态true与false来作为监听地图初始化的条件。 <Modaltitle{<div className"…

Python导入模块,Python import用法

使用 Python 进行编程时&#xff0c;有些功能没必须自己实现&#xff0c;可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说&#xff0c;在前面章节中&#xff0c;我们使用了一些数学函数&#xff0c;例如余弦函数 cos()、绝对值函数 fabs() 等&#xff0c;它们位…

git修改历史提交(commit)信息

我们在开发中使用git经常会遇到想要修改之前commit的提交信息&#xff0c;这里记录下怎么使用git修改之前已经提交的信息。一、修改最近一次commit的信息 首先通过git log查看commit信息。 我这里一共有6次commit记录。 最新的commit信息为“Merge branch ‘master’ of https:…

在线研讨会邀请 | 赋能“大”研发,助力“快”交付

在全速前进的后疫情时代&#xff0c;公司业务飞速发展&#xff0c;您&#xff0c;准备好了吗—— 您的开发、设计、美术等团队可能分布在全球各地&#xff0c;您如何帮助他们实现跨部门、跨区域的协作——让他们便捷共享、审查各种大文件&#xff08;包括二进制文件&#xff0…

【GD32F427开发板试用】+ GDLink和USART2

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;夏漳 一 GDLink下载和调试 1.1 硬件结构和试用板组成 感谢极术社区提供的GD32开发板&#xff0c;具体的板子资源和配套软件可以在极术社区官…

09笔记 IO操作

目录 一.向一个文本文件中写入数据&#xff1a; 二.从一个文本文件中读取数据&#xff0c;并对读取的数据做简单处理。 三.二进制文件的写入操作 四.对二进制文件的读取操作 五. 举例 六.IO操作的简单应用&#xff08;代码和举例都在更新和完善中&#xff09; 一.向一个文本…

软件测试工程师成神之路2023整理版

版本 更新日期 审核 备注 V0.3 2020-06-01 三丰 增加3大自动化 V1.0 2021-10-01 Nick 添加持续集成 V2.0 2023-01-31 三丰 完整性能版本 我看到迄今为止最完整的软件测试技术路线梳理 Python 编程语言 自动化之Python 编程语言 编程语言介绍/编程概念讲解/环…

大数据技术架构(组件)29——Spark:Memory Model(2)

2.1.8.5、Memory addressing以上小节介绍了spark对堆的划分&#xff0c;根据使用目的不同&#xff0c;对堆进行了区域划分,并说明了spark1.6之前和之后使用的两种不同内存模型管理以及之间的区别&#xff0c;那么这里继续逐步分析&#xff0c;说到内存管理&#xff0c;spark是如…

CTFshow菜狗杯-misc-wp(详解 脚本 过程 全)

首先感谢ctf平台和各位出题的大佬其次感谢各位读者&#xff0c;对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我废话不多话开启你们的旅程吧 这个也是我这几天才看 一些见解和思路分享给你们希望你们在旅途中玩的开心&#xff0c;学的开心✌( •̀ ω •́ )y杂项签到…