本文的主要目的是完成大彩串口屏官方代码到HAL库的移植,关于串口屏的核心内容学习详见大彩串口屏速通笔记一和大彩串口屏速通笔记二。那么接下来我们就开始代码的移植工作。
官方提供的文件有这么多,但是我们只需要用到其中的一部分,也就是下面五个文件即可。
我们将五个文件加入到工程中,开始对其进行修改移植。完成必要的操作后,对代码进行编译,会出现报错,那么我们接下来的工作就是逐一去解决报错和警告。
双击报错信息定位到该位置,该报错的原因是因为我们的工程文件中并无名为hmi_user_uart.h的头文件,事实上我们也并不需要这个文件,所以在添加文件的过程中并未将其添加。填补该报错的操作就是将引用的头文件改成usart.h,再次编译可以发现该报错消失了,但是反而出现了更多的报错
分析报错原因,是因为数据类型的定义出现问题,在现有的库中找不到对应的类型。结局方法有两种,一是使用文本替换,将uint8替换成uint8_t,其余的类型也依次进行替换,但是工作量大,而且容易出错。第二中方法则更加简便,在官方的资料中找到hmi_user_uart.h(没错就是前面被我们抛弃的那个文件),找到这一段宏定义
将其复制粘贴到usart.h中,再次编译即可。本质上讲宏定义也就是一种文本替换。再次编译后会发现还是存在许多警告和一个报错。
我们先去解决那一个眼前最近的警告,提示的是函数SendChar定义错误,而事实上我们所添加的文件中并没有这一个函数,所以我们需要重新写一个函数。在hmi_user_uart.h中,我们可以找到该函数的声明
再到相应的文件中找到该函数的函数体,分析其作用。
通过阅读代码可以知道,该函数的作用就是通过串口发送一个字节的数据,那就好办了,我们用相同的函数声明去封装一个串口发送的功能就行,于是我们就能够得到下面的代码。
该函数就能够完美的代替掉原函数的作用。我们将其写在usart.c中,并在usart.h中添加该函数的声明,重新编译
这下看起来就舒服多了,报错和警告的数量大大减少。接下去我们解决这一坨警告
如果没遇到过这坨警告,肯定会觉得无从下手。双击其中任意一条会跳转到一个头文件中,选中一条函数的声明
那想必就是这条声明的问题了,左看右看好像没什么问题,那我们唯一能做的就是在空的参数列表中加上void了,再次编译,果然这条警告就消失了,同类警告也同这一处理方法就能解决。再次编译,报错和警告都只剩下一条了
对于报错,直接双击后将该头文件的包含删除既可,而警告是MDK5自身的问题,双击后在相应的文件末尾追加一个新行就能解决。再次编译,报错和警告全部消失,移植就完成了
最后就是试验一下我们的移植有没有成功,我们编写一个简单的代码,让文本控件的背景色改变,控件控制相关的代码均在hmi_driver.c中,大家可以逐一熟悉一下,大致了解控件能够完成的事。改变控件的背景颜色我们使用该函数
在main.c中引用hmi_driver.h并在主函数中调用该函数并填入相应的参数后下板联机验证
可以看到文本控件的背景色雀食变成了我们预设的颜色,说明代码的移植结果是成功的。
串口屏的教程到此就全部结束了,掌握基本控件的使用,合理使用官方文件和自编函数能够让我们更加灵活地运用串口屏,希望读者能够继续深入学习,做到熟能生巧。