前言
前面我们已经学完了LED的配置和简单应用【STM32G431RBTx】备战蓝桥杯嵌入式→基本模块→LED,如果说点亮LED是学习单片机中的"Hello World",那么点亮LCD就是蓝桥杯嵌入式方向的"Hello World",本篇文章将在LED的工程基础上,通过移植大赛提供的LCD支持包点亮屏幕。
LCD
1.原理图以及配置元素
分析:
从原理图上看LCD占用的IO口有PB5,8,9,PA8,PC0-15。
2.CubeMx的配置步骤
PS:大赛的支持包内置了IO口的配置过程,运用LCD时可以不用专门配置。
在这里只需要将PB5,8,9,PA8,PC0-15设置为GPIO_Output即可,就不需要再进行其他配置了。
3.移植LCD支持包
同样的,把Src中的lcd.c文件复制粘贴到bsp文件夹中。
三个文件添加到bsp组中。
到此LCD的工程我们就建立完毕了。
4.测试代码
main.c中的main函数部分代码为:
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();
/* USER CODE BEGIN 2 */
LCD_Init();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
LCD_Clear(Blue); //清屏并将背景设为蓝色
LCD_SetBackColor(Blue); //设置字体背景颜色为蓝色
LCD_SetTextColor(White); //设置字体文本颜色为白色
LCD_DisplayStringLine(Line0, (uint8_t *)" ");
LCD_DisplayStringLine(Line1, (uint8_t *)" ");
LCD_DisplayStringLine(Line2, (uint8_t *)" LCD Test ");
LCD_DisplayStringLine(Line3, (uint8_t *)" ");
LCD_DisplayStringLine(Line4, (uint8_t *)" ");
LCD_SetBackColor(White); //设置字体背景颜色为白色
LCD_SetTextColor(Blue); //设置字体背景颜色为蓝色
LCD_DisplayStringLine(Line5, (uint8_t *)" ");
LCD_DisplayStringLine(Line6, (uint8_t *)" HAL LIB ");
LCD_DisplayStringLine(Line7, (uint8_t *)" ");
LCD_DisplayStringLine(Line8, (uint8_t *)" @80 ");
LCD_DisplayStringLine(Line9, (uint8_t *)" "); //一共九行,空格为背景颜色
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
5.效果显示
总结以及我的发现
1.总结
以上就是LED的配置以及测试代码。
本博客参考学长之前备赛博客中的LCD部分(主要是参考结构)
博客链接【STM32G4】备战蓝桥杯嵌入式—模块配置—LCD
参考的学习视频:【2023蓝桥杯 嵌入式组适用】CT117E-M4 新款开发板 3小时省赛模块 速成总结
2.我的发现
在b站冲浪的时候发现一个用嵌入式板子实现上位机投屏的项目蓝桥杯比赛结束,用参赛设备践行有屏就有BadApple,把它的源码拷下来后我自己试了一下,完成了如下的效果: