工程下载链接
前言
本次移植我们将在移植好的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中
接下来我们就可以改IIC文件了,我们先把引用的延时头文件改成我们定时器6的延时头文件即可
然后我们修改24C02的驱动文件,同样的,先把延时函数的头文件修改了,然后有一处毫秒级延时改成HAL库的HAL_Delay();就可以了
而接下来修改的触摸屏驱动文件,基本都是更改延时函数头文件跟更改毫秒级延时函数,这里就不过多赘述了,而出现下面的printf函数报错,我们可以引入“stdio.h”头文件或者直接注释掉即可,我这里是直接注释
然后我们编译一下,没有报错就可以把例程中的主函数复制到项目中的主函数中测试了,注意,我们只把触摸屏幕的代码复制,因为的我用的是电阻屏,屏幕也校准过,所以我只复制了屏幕测试和显示部分代码