因为使用的是软件SPI,比较简单,只要两步就能移植成功: 文件下载:https://wwi.lanzoup.com/ivAfY04el1ef 中景园官方源文件:https://pan.baidu.com/s/1wMQckYIXUWlyOZ6CDWl-9g 提取码:8888
1.修改指定的引脚和头文件
把中景园lcd_init.c(.h)官方初始化源文件的引脚
#define LCD_SCLK_Clr() GPIO_ResetBits(GPIOG,GPIO_Pin_12)
#define LCD_SCLK_Set() GPIO_SetBits(GPIOG,GPIO_Pin_12)
#define LCD_MOSI_Clr() GPIO_ResetBits(GPIOD,GPIO_Pin_5)
#define LCD_MOSI_Set() GPIO_SetBits(GPIOD,GPIO_Pin_5)
#define LCD_RES_Clr() GPIO_ResetBits(GPIOD,GPIO_Pin_4)
#define LCD_RES_Set() GPIO_SetBits(GPIOD,GPIO_Pin_4)
#define LCD_DC_Clr() GPIO_ResetBits(GPIOD,GPIO_Pin_15)
#define LCD_DC_Set() GPIO_SetBits(GPIOD,GPIO_Pin_15)
#define LCD_CS_Clr() GPIO_ResetBits(GPIOD,GPIO_Pin_1)
#define LCD_CS_Set() GPIO_SetBits(GPIOD,GPIO_Pin_1)
#define LCD_BLK_Clr() GPIO_ResetBits(GPIOE,GPIO_Pin_8)
#define LCD_BLK_Set() GPIO_SetBits(GPIOE,GPIO_Pin_8)
改成自己板子的引脚,和龙邱的操作方式 (注意自己板子的)
#define LCD_CS_Clr() LQ_PinWrite(D11, 0U)
#define LCD_CS_Set() LQ_PinWrite(D11, 1U)
#define LCD_SCLK_Clr() LQ_PinWrite(D12, 0U)
#define LCD_SCLK_Set() LQ_PinWrite(D12, 1U)
#define LCD_MOSI_Clr() LQ_PinWrite(E12, 0U)
#define LCD_MOSI_Set() LQ_PinWrite(E12, 1U)
#define LCD_RES_Clr() LQ_PinWrite(B13, 0U)
#define LCD_RES_Set() LQ_PinWrite(B13, 1U)
#define LCD_DC_Clr() LQ_PinWrite(E11, 0U)
#define LCD_DC_Set() LQ_PinWrite(E11, 1U)
#define LCD_BLK_Clr() LQ_PinWrite(G11, 0U)
#define LCD_BLK_Set() LQ_PinWrite(G11, 1U)
并修改LCD_GPIO_Init(void)引脚初始化函数为龙邱的方式: (这段代码直接去龙邱的lcd文件里复制就行)
void LCD_GPIO_Init(void)
{
CLOCK_EnableClock(kCLOCK_Iomuxc);
IOMUXC_SetPinMux(IOMUXC_GPIO_B1_05_GPIO2_IO21,0U);
IOMUXC_SetPinMux(IOMUXC_GPIO_B1_04_GPIO2_IO20, 0U);
IOMUXC_SetPinMux(IOMUXC_GPIO_B1_10_GPIO2_IO26, 0U);
IOMUXC_SetPinMux(IOMUXC_GPIO_B0_15_GPIO2_IO15, 0U);
IOMUXC_SetPinMux(IOMUXC_GPIO_B1_03_GPIO2_IO19, 0U);
IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_05_GPIO2_IO21,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_04_GPIO2_IO20,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_10_GPIO2_IO26,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_B0_15_GPIO2_IO15,0x10B0u);
IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_03_GPIO2_IO19,0x10B0u);
gpio_pin_config_t GPIO_Output_Config = {kGPIO_DigitalOutput,
1,
kGPIO_NoIntmode
};
GPIO_PinInit(GPIO2, 21, &GPIO_Output_Config);
GPIO_PinInit(GPIO2, 20, &GPIO_Output_Config);
GPIO_PinInit(GPIO2, 26, &GPIO_Output_Config);
GPIO_PinInit(GPIO2, 15, &GPIO_Output_Config);
GPIO_PinInit(GPIO2, 19, &GPIO_Output_Config);
}
**注意这里:**龙邱的默认结构体写的是0,引脚初始化低电平。要改成高电平才能使能屏幕。不然点不亮 完成后在文件开头加上要用到的.h文件 把stm32自带的定义变量类型的头文件"sys.h"换成"stdint.h"
2.替换delay延时函数
因为中景园用的是stm32自带的delay.h文件里的delay函数 我们要换成龙邱写法的函数 把开头的include "delay.h"散掉 并把这段代码加到代码的开头
void delay_ms(uint16_t ms)
{
volatile uint32_t i = 0;
while(ms--)
{
for (i = 0; i < 20000; ++i)
{
__asm("NOP");
}
}
}
其他主体代码就不用改了
在main.c里输入以下代码试试效果吧:
LQ_PinInit(G11, PIN_MODE_OUTPUT, 1);
LQ_PinWrite(G11, 1U);
LCD_Init();
LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
LCD_ShowChinese(40,0,"中景园电子",RED,WHITE,32,0);
|