正点原子STM32F4探索者开发板HAL库触摸屏例程移植到STM32CubeMX+CLion

工程下载链接

工程下载

前言

本次移植我们将在移植好的TFT LCD屏幕例程的基础上进行修改

正文

我们打开STM32CubeMX文件,并配置好一个1us的定时器,我这里使用的是定时器6
我这里的系统时钟频率是168M,定时器6挂在APB1上经过2分频是84M

定时器配置

然后我们在项目中创建一个HARDWARE文件夹并将官方例程中的24CXX、IIC、TOUCH文件夹复制到项目中
另外我们把移植好的LCD驱动也一起放到HARDWARE文件夹中

项目文件

然后我们把源文件路径和头文件路径添加到CLion中,不然编译的时候会报错找不到文件
我们可以在CMakeLists_template.txt文件中添加,而在CMakeLists.txt中添加时,
我们在STM32CubeMX中生成文件时,会把CMakeLists.txt内容覆盖掉
(后面添加的文件路径只需加在“include_directories”这一行即可)
HARDWARE/LCD HARDWARE/IIC HARDWARE/TIMx_DELAY HARDWARE/SYS HARDWARE/24CXX HARDWARE/TOUCH

"HARDWARE/*.*"

添加路径

然后我们在STM32CubeMX中重新生成一下项目,我们发现,文件路径已经添加进CMakeLists.txt了

添加路径后

我们就可以开始移植相关驱动了,首先我们使用定时器6来做延时1us函数用作产生IIC时序,
我这里新建了头文件跟源文件,注意,新建的头文件要把路径添加进CLion中
//头文件
#ifndef CPROJECT_TIMX_DELAY_H
#define CPROJECT_TIMX_DELAY_H
#include "tim.h"

#define DEL_TIM_Handle &htim6

void delay_us(uint16_t us);
//源文件
#include "TIMx_Delay.h"

void delay_us(uint16_t us)
{
    __HAL_TIM_SET_COUNTER(DEL_TIM_Handle, 0);
    __HAL_TIM_ENABLE(DEL_TIM_Handle);
    while(__HAL_TIM_GET_COUNTER(DEL_TIM_Handle) < us);
    __HAL_TIM_DISABLE(DEL_TIM_Handle);
}

延时头文件

延时源文件

因为例程的IIC还使用了位带操作,所以我们还要把sys文件夹添加进我们的项目,别忘了把头文件路径添加进CLion,而在sys.c中,不知道是我配置环境问题还是其他问题,汇编语句会报错,所以只能把那几个函数删了,这并不影响我们的IIC,因为IIC使用的位带操作在sys.h中

sys源文件

sys头文件

接下来我们就可以改IIC文件了,我们先把引用的延时头文件改成我们定时器6的延时头文件即可

myiic修改前
myiic修改后
然后我们修改24C02的驱动文件,同样的,先把延时函数的头文件修改了,然后有一处毫秒级延时改成HAL库的HAL_Delay();就可以了
修改头文件

修改毫秒延时

而接下来修改的触摸屏驱动文件,基本都是更改延时函数头文件跟更改毫秒级延时函数,这里就不过多赘述了,而出现下面的printf函数报错,我们可以引入“stdio.h”头文件或者直接注释掉即可,我这里是直接注释
打印函数

然后我们编译一下,没有报错就可以把例程中的主函数复制到项目中的主函数中测试了,注意,我们只把触摸屏幕的代码复制,因为的我用的是电阻屏,屏幕也校准过,所以我只复制了屏幕测试和显示部分代码

main1
main2
下载完成

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值