本帖最后由 genglilai 于 2015-12-31 23:25 编辑
使用了STM32CubeMX就不用说了,开发坏境是EWARM 6.40.5,片子STM32F103ZET6
BSP驱动提供的一大堆绘图函数,比某宝JS良心多了~!简直HIGH到飞起~
/*----------------------------------------------------分割线----------------------------------------------------*/
LZ板子LCD的接口原理图
STM3210E-EVAL的LCD接口原理图
LCD.rar
(43.12 KB)
移植好的驱动在此,首先声明,要使用官方Cube提供的HAL库
LCD使用的是FSMC接口,在CubeMX中配置如下
如若手里板子LCD非FSMC接口,就跳过吧。。。FSMC不是16bit也跳过吧(有手动能力的除外)
若片选RS(NE4)和LCD寄存器选择(A0)不同,请自行修改(也有一部分代码,下面说)
不过为了代码的优化,现只支持ili9325和ili9328,所以驱动是ili9325和ili9328而且片选和寄存器选择口与我相同
下面的可以不看了,直接用吧。如果不是,别着急,下面听如何修改
解压后,可以看到如下文件目录:
\LCD
| stm3210e_eval_lcd.c
| stm3210e_eval_lcd.h
|
+---Components
| +---Common
| | lcd.h
| |
| +---hx8347d
| | hx8347d.c
| | hx8347d.h
| | Release_Notes.html
| |
| +---ili9320
| | ili9320.c
| | ili9320.h
| | Release_Notes.html
| |
| +---ili9325
| | ili9325.c
| | ili9325.h
| | Release_Notes.html
| |
| +---spfd5408
| | Release_Notes.html
| | spfd5408.c
| | spfd5408.h
| |
| \---st7735
| Release_Notes.html
| st7735.c
| st7735.h
|
\---Fonts
font12.c
font16.c
font16_s.c
font20.c
font20_s.c
font24.c
font8.c
fonts - 副本.h
fonts.h
Release_Notes.html
一、文件移植
首先把此LCD文件夹拷贝到你自己工程的目录下,并且把LCD目录路径添加到自己工程的环境下
在main.c中添加 #include "stm3210e_eval_lcd.h"
把stm3210e_eval_lcd.c和Component中用各个c文件添加到工程中
二、对部分代码进行修改
1.stm3212e_eval_lcd.h部分
包含文件部分
在此文件中,找到如下部分
修改为
字体大小更改,Font20_s可以改为其他(参照Fonts目录)
Font*_s是LZ自己提取的宋体ASCII码字库90多个字符
#define LCD_DEFAULT_FONT Font20_s
2.stm3212e_eval_lcd.c部分
找到如下代码
修改为
如果你的LCD芯片驱动是hx8347d,找到如下部分,并把注释去掉
接口部分
无非就是有关FSMC接口的初始化和配置的问题
接口部分找到下图部分,并自行修改(NE1~4对应端口PD7,PG9,PG10,PG12)
FSMC初始化部分找到static void FSMC_BANK1NORSRAM4_Init(void)函数
片选如果与NE4不同,请改BANK4不同的值(NE1~4对应 BANK1~4)
hsram.Init.NSBank = FSMC_NORSRAM_BANK4;
以上基本差不多是整个移植的过程,使用时先初始化一下 BSP_LCD_Init();
具体的绘图函数请参照stm3210e_eval_lcd.c
大家动手试试吧,出现问题发到帖子上一起讨论
|