STM32HAL庫ILI9341_SPI屏的使用教程(使用STM32CubMX)

引言

最近我們在做STM32單片機的實訓,實訓中用到了ILI9341_SPI屏,但是老師給的標準庫的spi庫,雖然標準庫我也會一點,但是因爲種種原因(比如可能是因爲懶)我在使用STM32CubMX,因此我試着把ILI9341_SPI的標準庫程序移植到了HAL庫上。
例程鏈接: STM32HAL庫ILI9341_SPI例程及用到取模軟件.

接線

在這裏插入圖片描述
在這裏插入圖片描述

STM32CubMX配置

如果不使用STM32CubMX可以跳過直接看移植過程
先創建一個STM32CubMX(芯片我用的STM32F103C6)工程,創建工程、設置時鐘、設置IDE、設置分.c/.h輸出,前面的我就不演示了,設置完後再將ILI9341_SPI屏用到的幾個引腳爲輸出模式(如下圖),引腳連接在前面,然後生成代碼。這裏我的引腳最大輸出速度設置的是高,但是在後面顯示圖片的時候發現圖片亂碼,檢查後發現因爲我設置的40MHZ的內部時鐘,而引腳最大輸出速度設置爲高好像是50MHZ,改爲Medium,就可以正常顯示了,這裏根據自己設置的時鐘主頻來選擇引腳最大輸出速度
在這裏插入圖片描述

ILI9341_SPI庫函數移植

將ILI9341_SPI程序複製到生成代碼的文件夾中
在這裏插入圖片描述

在工程中添加ILI9341_SPI庫

在這裏插入圖片描述在這裏插入圖片描述## 代碼移植
在main.c中添加:

#include "sys.h"
#include "lcd.h"
#include "spi.h"
#include "GUI.h"

在main.h中添加:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define delay_ms(x) HAL_Delay(x) 
#define Delay_ms(x) HAL_Delay(x) 

編譯一下程序就算好了

顯示字符串例程

在main函數中添加

LCD_Init();
Show_Str(0,16,BLACK,0XFFFF,(u8 *)"666666",16,1);

Show_Str函數的具體使用方法自己看函數說明吧,挺詳細的

效果演示:

在這裏插入圖片描述

進階操作

顯示中文字符

想要在LCD屏上默認只能顯示英文字符和數字,想要顯示中文要在取字模軟件中取字模添加到font.h中

打開取字模軟件,選擇取模方式: 橫向取模、 字節不倒敘

在這裏插入圖片描述

輸入要顯示的中文後按下Ctrl+Enter

在這裏插入圖片描述

設置取模方式生成點陣

在這裏插入圖片描述

移植點陣

將生成的點陣放到font.h中,可以再GUI.c中找到該頭文件跳轉進去,找到tfont16(可能是因爲生成的是1616的點陣,下面還有tfont24、tfont32可能對應的2424的點陣和32*32的點陣,這個我沒用到,有大佬知道可以在評論區說一下)數組將點陣按照下列格式放入該數組:
在這裏插入圖片描述

效果演示

在這裏插入圖片描述

顯示圖片

調整圖片大小

使用畫圖打開要顯示的圖片,按像素重新調整大小爲合適尺寸(不要超過屏幕大小)

在這裏插入圖片描述

圖片取模

打開圖片取模軟件按下圖設置給圖片取模:
在這裏插入圖片描述將生成的.h文件保存到ILI9341_SPI\Photo文件夾中:
在這裏插入圖片描述

使用方法

在main.c中包含頭文件:

#include "test.h"

在mainz函數中加入函數:

Paint_Bmp(0,48,100,87,gImage_test); //圖片左上角座標(0,48),圖片大小100*87,test.h中的數組gImage_test

編譯後如果沒有出錯就完成了

效果演示

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章