上海企业网站建设,广州做seo整站优化公司,wordpress简体切换,网站开发工程师课程本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动#xff0c;更多开发板试用活动请关注极术社区网站。作者#xff1a;boc 【虽迟但到】
由于快递的原因#xff0c;11月份申请的#xff0c;12月1日才收到GD32F427开发板。虽然姗姗来迟#xff0c;但也没有减少… 本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动更多开发板试用活动请关注极术社区网站。作者boc 【虽迟但到】
由于快递的原因11月份申请的12月1日才收到GD32F427开发板。虽然姗姗来迟但也没有减少对他的期待。这不收到板子后赶紧焊接插针连接SPI屏幕如下图 连接好后马不停蹄地赶快点亮LCD屏幕并移植好Arm-2D显示一个电池电量的小demo效果演示如下
https://www.bilibili.com/video/BV1fg411n7wywww.bilibili.com/video/BV1fg411n7wy
怎么样效果还可以吧。
【Arm-2D简介】
首先我们简单介绍一下Arm-2D是什么。他是arm公司开源的2d图形加速引擎由于它支持pfb技术所以Arm-2D对小资源单片机flash64K,ram32K的支持也非常好. 当然了他的移植也非常简单大家可以看下面这个教程 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也越来越好。