1、准备开发板
这里我选用了一块网红开发板:”小熊派“,这款板子的人气比较高,还是全国大学生物联网设计竞赛(华为杯)的华为竞赛开发板,我个人也比较喜欢用这款板子,这款板子在放在纸箱吃灰半年之后,被我重新拿了起来,并想借此写博客的机会,整理一下自己的代码。
开发板功能区分布图
开发板俯视图
2、STM32CubeMX生成代码
搜索并选择芯片型号
配置系统时钟
配置时钟树
STM32L4的最高主频可达到80M,最后使HCLK = 80Mhz
即可:
配置GPIO
配置SPI
SPI2默认SCK引脚是PB10,和开发板不对应,所以重新修改引脚为PB13:
修改引脚的用户标签(相当于取另一个新名字)
生成工程设置
代码生成配置
生成代码
生成成功
3、在MDK中编写代码
添加LCD驱动到工程目录
将LCD压缩包里面的所有文件,解压到./Hardware/LCD路径里面
添加工程文件夹
添加头文件路径
在spi.h中编写以下代码
/* USER CODE BEGIN Prototypes */
uint8_t SPI2_WriteByte(uint8_t* data, uint16_t size);
/* USER CODE END Prototypes */
在spi.c中编写以下代码
/* USER CODE BEGIN 1 */
uint8_t SPI2_WriteByte(uint8_t* data, uint16_t size)
{
return HAL_SPI_Transmit(&hspi2, data, size, 0xff);
}
/* USER CODE END 1 */
在main.c中编写以下代码
/* USER CODE BEGIN Includes */
#include "lcd.h"
/* USER CODE END Includes */
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI2_Init();
/* USER CODE BEGIN 2 */
LCD_Init();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
LCD_Clear(BLACK);//清屏为黑色
LCD_ShowString(5, 10, 240, 32, 32, "BearPi LCDTest");//显示字符串,字体大小32*32
LCD_ShowString(10, 50, 240, 16, 16, "Welcome to IoT CluB!");//显示字符串,字体大小16*16
LCD_ShowString(10, 50+24, 240, 24, 24, "to IoT CluB!");//显示字符串,字体大小24*24
LCD_ShowString(10, 50+24+32, 240, 32, 32, "IoT CluB!");//显示字符串,字体大小32*32
PutChinese_strings(10,150,"欢迎来到物联网俱乐部",0);
HAL_Delay(1000);//延时1秒
LCD_Clear(BLUE);//清屏为蓝色
LCD_Draw_Circle(120, 120, 100);//画圆 半径r=100
LCD_Draw_Circle(120, 120, 80);//画圆 半径r=80
LCD_Draw_Circle(120, 120, 60);//画圆 半径r=60
LCD_Draw_Circle(120, 120, 40);//画圆 半径r=40
LCD_Draw_Circle(120, 120, 20);//画圆 半径r=20
LCD_Draw_Circle(120, 120, 1);//画圆 半径r=1
HAL_Delay(1000);//延时1秒
}
/* USER CODE END 3 */
}
4、配置烧录器
5、烧录代码
6、实验现象
在LCD上显示测试画面