0.前言
把开发板的demo程序下载来之后,打开压缩包,发现一堆的代码文件,乍一看真的有点头皮发麻,不过仔细看的话发现还好,代码分层还是比较清晰,做二次开发不需要去分析下层的代码内容,只需要按照历程来实现我们的功能就可。由于代码较多不太推荐使用keil来进行代码编写,推荐使用vscode或是SI来进行编写,此外,由于代码量较大,直接下载免费版是无法编译的,需要注册,如何注册的问题,各位小伙伴们就去baidu吧,这里不写啦。
由于最近工作比较忙,进展不是特别大,这周只是把UI初步调试完成,想来想去还是写一篇总结吧,毕竟也算一个节点。
1.初始化界面的修改
开机的时候会显示ST的logo及制作团队声明,由于是我们自己开发的作品,我们就改成我们自己的logo及说明吧。
if(!Menu_GetUserInput())
{
SplashScreen( );
Menu_Start( );
}
Menu_MsgStatus("USB mode","Reset the board for other demos",MSG_INFO);
MX_USB_DEVICE_Init();
在main函数中,我们可以看到如上代码,其中判断如果没有按键,则正常进入菜单否则继续向下走进入usb模式,其中SplashScreen函数就是进行显示开机logo及制作团队的声明。
其中Menu_DisplayPicture函数就是显示开机logo的,传入值为对应的坐标值(以屏幕的右上角为0,0点)及图像数据,这里我已经改成我自己图片了。在原生图片数组中可以看到前四个字节为ffd8ffe0,这个是jpg文件的标准文件头,也就是说这个数组是没有对文件数据进行裁剪,我们只需将图像数据转换成数组就可以了。
2020-9-13 21:51 上传
点击文件名下载附件
我没有找到类似转换的工具,只好自己写一个了,本想用C写,想了一下,大家如果也需要使用还需要编译,比较麻烦,所以就用python写了上面的文件,使用方法为“./file_to_h_file.py make_head_file --input jpg文件路径 --output 输出文件路径 --array_name 数组名称”,生成后导入替换数组名称就可以使用。
修改后的开机logo如上,此图为高达动画中红色彗星的logo,所这次我修改的后的主题主题就叫做红色彗星啦
继续向下走,BSP_LCD_Clear函数为清屏函数,传入值为颜色值,这里采用预设的红色(原厂demo为蓝色),颜色值采用的是16位的565格式,这里直接使用预设的宏。
下一句Menu_SetStyle为设置显示的字体主题,其中是设置背景色及字体色,如上这里我也改成了红底白字。
下面的几个函数就是按照行号来显示数据了,修改后如上图。
2.增加我们自己的功能
ST的demo中做了一套比较方便的UI菜单系统,我只需将我们的新功能添加到后边即可实现功能菜单的添加。
static const char* MainMenuIcons[] = { tag_detection_84x84, emulate_84x84, P2P_84x84 ,aat_84x84,car_84x84 };
首先在Menu_definition.c文件中的MainMenuIcons数组中指定logo的图片,这个logo也用格式为jpg的图片转换成数组来显示的,还是可以使用上边的工具进行转换。
在下边的MainMenuItems 数组中来添加对你增加项描述,第一参数为此项的说明,第二个参数执行函数,如果有下级菜单此项为初始化函数,第三个参数直接设置为idlefunc就可,第四个参数如果有下级菜单则为下级菜单的描述,可以参照这个文件中的几个菜单进行写,由于我这边没有用上就没有怎么调试了,所以这个参数就略过了。
修改之后,发现我添加的图标都压在最下边了,没办法只好一点一点的仿真查问题了。
最后发现在menu_core.c中计算图标行数时候出了问题,如果图标的数目无法被行数整除就会往下再移一行,这个能算个bug,但也有点不太好,所以我就加了一个判断如果不整除就每行图标加一个。
修改后图标就正常了。
3.添加自己功能的描述函数
这里就直接抄袭了,st官方demo中的exampleRfalPoller.c,进行了删减和修改,先做一个简单的UI功能。
这个就是我的入口函数了,前面是显示的初始化,实际执行在exampleRfalPollerRun函数中进行运行的。
初始化显示界面,这里的函数前面都介绍过了,这里就不多说了,唯一没有介绍的是BSP_LCD_DrawRectangleWithRoundCorner函数,这个画圆角矩形的API,用法比较简单就不多了,要注意的是ST预设很多的绘图API我们可以直接使用,接口的声明都放在st25_discovery_lcd.h中,大家可以选择使用。
画完的初始化UI就是这个效果了,下面的按键是模拟人去关门的动作。
这块是功能的运行程序,这里我进行删减,把原来的读卡功能函数都去掉了,只保留了一个基本共能,因为这次主要调试UI这里就不加什么实际功能了,只保留了触摸处理的功能。
这里就是触摸处理的函数了,当我们按在屏幕下方时,就推出此界面;如果我在了绘制按键位置时,就将状态修改为“关门状态”并重新绘制UI。
按close door效果。
4.后记
能想到写的就这么多了,我修改后的代码如下,有什么问题,请大家尽情拍砖~
2020-9-14 22:52 上传
点击文件名下载附件
2020-9-14 22:52 上传
点击文件名下载附件
2020-9-14 22:52 上传
点击文件名下载附件
另外两篇位置:
【2020意法半导体开发大赛】智能车锁开发--part 1
【2020意法半导体开发大赛】智能车锁开发--part 3 最总完成1
全部回复 0
暂无评论,快来抢沙发吧
欢迎进入意法半导体专区:
意法半导体(STMicroelectronics; ST)是全球领先的半导体公司,提供与日常生活息息相关的智能的、高能效的产品及解决方案。意法半导体的产品无处不在,致力于与客户共同努力实现智能驾驶、智能工厂、智慧城市和智能家居,以及下一代移动和物联网产品。享受科技、享受生活,意法半导体主张科技引领智能生活(life.augmented)的理念。意法半导体2019年净收入95.6亿美元,在全球拥有10万余客户。
详情请浏览意法半导体公司网站:https://www.st.com
意法半导体(STMicroelectronics; ST)是全球领先的半导体公司,提供与日常生活息息相关的智能的、高能效的产品及解决方案。意法半导体的产品无处不在,致力于与客户共同努力实现智能驾驶、智能工厂、智慧城市和智能家居,以及下一代移动和物联网产品。享受科技、享受生活,意法半导体主张科技引领智能生活(life.augmented)的理念。意法半导体2019年净收入95.6亿美元,在全球拥有10万余客户。
详情请浏览意法半导体公司网站:https://www.st.com
- 帖子 339
- 回复 1532
评测文章
热帖
大家都在看的技术资料
举报
内容系网友发布,其中涉及到安全隐患的内容系网友个人行为,不代表面包板社区观点
关闭
站长推荐 /3
- 返回顶部
工具栏