打印
[其他ST产品]

STM32F4使用FSMC驱动4.3寸触摸屏(HAL库+CubeMX)

[复制链接]
楼主: o88ne
手机看帖
扫描二维码
随时随地手机跟帖
21
o88ne|  楼主 | 2023-6-27 14:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
5、触摸部分
        接下来是触摸部分。根据硬件连线部分连好线之后,将下面的代码全部添加到工程中:
   
这里之所以不用Cubemx来初始化是因为它代码里面已经用HAL库写好了对应的GPIO初始化,所以就没必要再在Cubemx里面再初始化一遍;这几个文件中,除了touch.c之外,其他的文件只要引脚没错就不需要修改代码;下面是关于如何修改touch.c:

使用特权

评论回复
22
o88ne|  楼主 | 2023-6-27 14:41 | 只看该作者
它的源代码中囊括了电阻触摸屏和电容触摸屏的代码,而电阻触摸屏初始化的时候需要配合EEPROM来进行校准,但是我们这块屏幕是电容触摸,不需要校准,所以要将电阻触摸以及EEPROM的部分都注释掉;此外,它有一个全局变量tp_dev,这个结构体初始化的时候需要传入TP_Adjust函数指针,虽然我们用不到这个函数,但是不定义这个函数的话就会报错,所以我定义了一个空函数来避免报错:

void TP_Adjust(void)
{
        //as function pointer,avoid error
        //作为一个函数指针传给那个全局结构体,避免报错
}

另外,我通过调试发现这款LCD的ID值是0X5510,所以将TP_Init里面的if(lcddev.id==0X5510)之外的所有代码都注释掉了。最后在主函数初始化部分调用tp_dev.init();即可初始化触摸接口。

        那关于主函数的剩余部分均是用来测试显示以及测试触摸的,直接复制运行即可。

使用特权

评论回复
23
o88ne|  楼主 | 2023-6-27 14:41 | 只看该作者
6、效果图
效果图1:

使用特权

评论回复
24
o88ne|  楼主 | 2023-6-27 14:42 | 只看该作者
效果图2:


工程链接:https://pan.baidu.com/s/1IeKVDPOYpAQAuO_oMX2x0A
提取码:0xFF

使用特权

评论回复
25
o88ne|  楼主 | 2023-6-27 14:42 | 只看该作者
7、裸机 + LVGL图形库
lvgl的版本是release 8.3.3

没下载源码的先去Github下载源代码,然后再移植

进去GitHub之后,点左上角master,选择tag,再选版本8.3.3,然后再下载:

使用特权

评论回复
26
o88ne|  楼主 | 2023-6-27 14:42 | 只看该作者
下载后得到的文件夹如下:

使用特权

评论回复
27
o88ne|  楼主 | 2023-6-27 14:43 | 只看该作者
下面开始移植。首先打开我之前提供的工程文件夹,再打开.ioc文件(cubemx),然后只需要做一件事:修改最小的栈大小为0x1000(十进制下就是4kB),这是因为lvgl最小要求2kB,我们可以适当给大一点,最后直接生成代码即可:

使用特权

评论回复
28
o88ne|  楼主 | 2023-6-27 14:43 | 只看该作者
进去之后,可以把之前的测试函数全部删了,就是在/* USER CODE BEGIN 0 */和/* USER CODE END 0 */之间的代码,还有主函数中,只需要留下初始化代码即可:

使用特权

评论回复
29
o88ne|  楼主 | 2023-6-27 14:44 | 只看该作者
然后编译优化改为Level 0,compiler勾上C99(一般情况下debug时用Level 0,release的时候用Level 1即可,然后C99模式是LVGL必须的,不然会报几千个错):

使用特权

评论回复
30
o88ne|  楼主 | 2023-6-27 14:44 | 只看该作者

使用特权

评论回复
31
o88ne|  楼主 | 2023-6-27 14:45 | 只看该作者
然后取消勾选Use MicroLIB,这是因为LVGL在用QR Code控件的时候,勾上这个会报错,当然你不用的话就无所谓:

使用特权

评论回复
32
o88ne|  楼主 | 2023-6-27 14:45 | 只看该作者
最后编译一下,如果像下面这样报了很多Warning:

使用特权

评论回复
33
o88ne|  楼主 | 2023-6-27 14:45 | 只看该作者
就去魔术棒->C/C++那里,取消勾选Split Load and Store Multiple选项,然后重新编译:

使用特权

评论回复
34
o88ne|  楼主 | 2023-6-27 14:45 | 只看该作者
结果:

使用特权

评论回复
35
o88ne|  楼主 | 2023-6-27 14:47 | 只看该作者
下面开始移植文件:

首先在工程目录下新建一个新文件夹(名字任意):

使用特权

评论回复
36
o88ne|  楼主 | 2023-6-27 14:47 | 只看该作者
进入GUI文件夹,再新建两个文件夹lvgl以及lvgl_port:

使用特权

评论回复
37
o88ne|  楼主 | 2023-6-27 14:47 | 只看该作者
然后将lvgl-8.3.3下的src整个文件夹以及lvgl.h文件复制到刚刚新建的lvgl中:

使用特权

评论回复
38
o88ne|  楼主 | 2023-6-27 14:48 | 只看该作者
再将各个文件重命名:

使用特权

评论回复
39
o88ne|  楼主 | 2023-6-27 14:48 | 只看该作者
接着将“lvgl-8.3.3\lv_conf_template.h”复制到GUI下面,并改名为lv_conf.h:

使用特权

评论回复
40
o88ne|  楼主 | 2023-6-27 14:48 | 只看该作者
接下来进入Keil中,添加源码到工程目录中。

首先新建两个工程子目录GUI/lvgl以及GUI/lvgl_port(名字随意都可以,但是最好方便辨认):


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则