2.移植至F4
创建工程:
笔者选择使用CubeMX创建工程,Hal库开发:
调试接口选择SW:
RCC中HSE选择外部晶振:
GPIO配置不变:
时钟树暂时仍固定72MHz:
然后生成工程即可。
导入文件:
在工程文件夹中创建一个LCD文件夹复制例程文件至此:
头文件路径添加LCD文件夹:
修改文件:
前置:
向所有.h文件(用了u8,u16,u32的)中添加以下定义:
#ifndef u8
#define u8 uint8_t
#endif
#ifndef u16
#define u16 uint16_t
#endif
#ifndef u32
#define u32 uint32_t
#endif
!Lcd_Driver.h文件!
这个文件很重要。
添加#include "stdint.h"头文件,并
将以上宏定义都改为:
1.//液晶控制口置1操作语句宏定义 #define LCD_SCL_SET LCD_CTRLA->BSRR=LCD_SCL #define LCD_SDA_SET LCD_CTRLA->BSRR=LCD_SDA #define LCD_CS_SET LCD_CTRLA->BSRR=LCD_CS #define LCD_LED_SET LCD_CTRLB->BSRR=LCD_LED #define LCD_RS_SET LCD_CTRLB->BSRR=LCD_RS #define LCD_RST_SET LCD_CTRLB->BSRR=LCD_RST //液晶控制口置0操作语句宏定义 #define LCD_SCL_CLR LCD_CTRLA->BSRR = (uint32_t)LCD_SCL << 16U #define LCD_SDA_CLR LCD_CTRLA->BSRR = (uint32_t)LCD_SDA << 16U #define LCD_CS_CLR LCD_CTRLA->BSRR = (uint32_t)LCD_CS << 16U #define LCD_LED_CLR LCD_CTRLB->BSRR = (uint32_t)LCD_LED << 16U #define LCD_RST_CLR LCD_CTRLB->BSRR = (uint32_t)LCD_RST << 16U #define LCD_RS_CLR LCD_CTRLB->BSRR = (uint32_t)LCD_RS << 16U
至于原因在这里不过多赘述,详情参考:【总结】单片机重点知识总结记录(存储管理+STM32滴答定时器)-CSDN博客
Lcd_Driver.c文件
中添加F4的头文件,去掉delay.h;初始化函数可以全部注释掉(因为我们已经在CubeMX中配置过相应的GPIO了);同时把文件中所有delay_ms()改成相应的HAL_Delay():
GUI.h文件
添加#include "stdint.h"
GUI.h文件
添加#include "stdint.h"
GUI.c文件
添加F4头文件,并替换延时函数为HAL_Delay():
GUITFT_demo.c文件
添加头文件,并修改延时函数,同时所有的测试字符串使用强制转换为指针类型,如下:
向主函数中添加驱动文件
三.测试
在主函数中添加demo函数测试:
1. while (1) 2. { 3. QDTFT_Test_Demo(); 4. 5. /* USER CODE END WHILE */ 6. 7. /* USER CODE BEGIN 3 */ 8. }
编译下载:
!!!成功!!!