news 2026/5/7 7:47:51

[STM32L5] 【STM32L562E_DK开发板】--4.LCD显示

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32L5] 【STM32L562E_DK开发板】--4.LCD显示

本篇讲述驱动LCD显示。
一.原理
开发板使用204*240 RGB LCD。原理如下



二.代码准备
1.GPIO引脚配置如下,主要是复位引脚、背光引脚、电源控制引脚。


2.LCD FMC接口配置


至此,实现硬件引脚配置。后面以STM32Cube MCU Packages安装包下的BSP库为基础代码展开。
3.LCD初始化。在SystemHardwareInit函数内实现,包含GPIO引脚初始化与设置

复制
  1. staticvoidSystemHardwareInit(void)
  2. {
  3. /*
  4. ......
  5. */
  6. LCD_UTILS_Drv_t lcdDrv;
  7. /* Set UTIL_LCD functions */
  8. lcdDrv.DrawBitmap = BSP_LCD_DrawBitmap;
  9. lcdDrv.FillRGBRect = BSP_LCD_FillRGBRect;
  10. lcdDrv.DrawHLine = BSP_LCD_DrawHLine;
  11. lcdDrv.DrawVLine = BSP_LCD_DrawVLine;
  12. lcdDrv.FillRect = BSP_LCD_FillRect;
  13. lcdDrv.GetPixel = BSP_LCD_ReadPixel;
  14. lcdDrv.SetPixel = BSP_LCD_WritePixel;
  15. lcdDrv.GetXSize = BSP_LCD_GetXSize;
  16. lcdDrv.GetYSize = BSP_LCD_GetYSize;
  17. lcdDrv.SetLayer = BSP_LCD_SetActiveLayer;
  18. lcdDrv.GetFormat = BSP_LCD_GetFormat;
  19. UTIL_LCD_SetFuncDriver(&lcdDrv);
  20. /* Clear the LCD */
  21. UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
  22. /* Set the display on */
  23. if(BSP_LCD_DisplayOn(0) != BSP_ERROR_NONE)
  24. {
  25. Error_Handler();
  26. }
  27. }

4.LCD刷屏显示红、绿、蓝

复制
  1. UTIL_LCD_FillRect(0, 0, 240, 240, UTIL_LCD_COLOR_RED);
  2. HAL_Delay(1000);
  3. UTIL_LCD_FillRect(0, 0, 240, 240, UTIL_LCD_COLOR_GREEN);
  4. HAL_Delay(1000);
  5. UTIL_LCD_FillRect(0, 0, 240, 240, UTIL_LCD_COLOR_BLUE);
  6. HAL_Delay(1000);

5.LCD显示字符串

复制
  1. UTIL_LCD_SetFont(&Font16);
  2. /* Set the LCD Text Color */
  3. UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_LIGHTMAGENTA);
  4. UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_BLUE);
  5. UTIL_LCD_FillRect(0,0,240,30, UTIL_LCD_COLOR_LIGHTMAGENTA);
  6. /* Display LCD messages */
  7. UTIL_LCD_DisplayStringAt(0,10, (uint8_t*)"STM32L562E-DK Board", CENTER_MODE);

6.LCD显示图像
(1)制作200*200像素图片,使用Image2Lcd工具加载设置如下图所示,生成图像数组。


(2)编写画图函数

复制
  1. voidLCD_ShowPicture(uint16_tx,uint16_ty,uint16_tcolumn,uint16_trow,uint32_t*pic)
  2. {
  3. uint16_tm,h;
  4. uint32_t*data=(uint32_t*)pic;
  5. for(h=0+y;h<row+y;h++)//60
  6. {
  7. for(m=0+x;m<column+x;m++)//180
  8. {
  9. // LCD_Fast_DrawPoint(m,h,*data++);
  10. UTIL_LCD_SetPixel(m,h,*data++);
  11. }
  12. }
  13. }

7.main函数

复制
  1. intmain(void)
  2. {
  3. /* STM32L5xx HAL library initialization:
  4. - Systick timer is configured by default as source of time base, but user
  5. can eventually implement his proper time base source (a general purpose
  6. timer for example or other time source), keeping in mind that Time base
  7. duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
  8. handled in milliseconds basis.
  9. - Set NVIC Group Priority to 3
  10. - Low Level Initialization
  11. */
  12. HAL_Init();
  13. /* Configure the System clock to have a frequency of 110 MHz */
  14. SystemClock_Config();
  15. /* For better performances, enable the instruction cache in 1-way direct mapped mode */
  16. HAL_ICACHE_ConfigAssociativityMode(ICACHE_1WAY);
  17. if(HAL_ICACHE_Enable() != HAL_OK)
  18. {
  19. /* Initialization Error */
  20. Error_Handler();
  21. }
  22. /* System common Hardware components initialization (Leds, button, joystick and LCD) */
  23. SystemHardwareInit();
  24. UTIL_LCD_FillRect(0,0,240,240, UTIL_LCD_COLOR_RED);
  25. HAL_Delay(5000);
  26. UTIL_LCD_FillRect(0,0,240,240, UTIL_LCD_COLOR_GREEN);
  27. HAL_Delay(5000);
  28. UTIL_LCD_FillRect(0,0,240,240, UTIL_LCD_COLOR_BLUE);
  29. HAL_Delay(5000);
  30. /* Clear the LCD */
  31. UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
  32. UTIL_LCD_SetFont(&Font16);
  33. /* Set the LCD Text Color */
  34. UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_WHITE);
  35. UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_BLACK);//UTIL_LCD_COLOR_BLACK//UTIL_LCD_COLOR_BLUE
  36. // UTIL_LCD_FillRect(0, 0, 240, 30, UTIL_LCD_COLOR_LIGHTMAGENTA);
  37. /* Display LCD messages */
  38. UTIL_LCD_DisplayStringAt(0,10, (uint8_t*)"STM32L562E-DK Board", CENTER_MODE);
  39. // UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_LIGHTMAGENTA);
  40. // UTIL_LCD_FillRect(0, 18, 240, 19, UTIL_LCD_COLOR_LIGHTMAGENTA);
  41. UTIL_LCD_DrawHLine(0,25,240,UTIL_LCD_COLOR_LIGHTMAGENTA);
  42. //UTIL_LCD_DrawBitmap(0, 0, (uint8_t *)gImage_1);
  43. LCD_ShowPicture(20,40,200,200,(uint32_t*)gImage_1);
  44. HAL_Delay(100);
  45. /* Infinite loop */
  46. while(1)
  47. {
  48. }
  49. }



三.测试
编译烧录后。LCD分别显示红绿蓝刷品,显示字符串及图像。效果如下。







ps:资源图片







---------------------
作者:dirty123
链接:https://bbs.21ic.com/forum.php?mod=viewthread&tid=3435986
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 8:12:31

看完就会:10个AI论文工具测评!MBA毕业论文写作+格式规范全攻略

在当前学术研究日益数字化的背景下&#xff0c;MBA学员在撰写毕业论文时面临诸多挑战&#xff1a;从选题构思到文献综述&#xff0c;从数据整理到格式规范&#xff0c;每一步都可能成为影响效率的关键节点。尤其在AI技术广泛应用的今天&#xff0c;如何选择一款真正能提升写作效…

作者头像 李华
网站建设 2026/5/4 18:14:58

冗余标准:企业如何构建接入、汇聚与交换系统全栈冗余体系

制定接入系统冗余标准、设计汇聚层冗余架构、统一交换系统冗余标准 摘要 为企业IT部门、信息化负责人及运维团队提供核心价值&#xff1a;通过标准化的全栈冗余体系建设&#xff0c;结合可视化运行监控系统&#xff0c;支撑ICT系统规划、标准化交付与平台化运维&#xff0c;实…

作者头像 李华
网站建设 2026/5/3 6:04:58

日志禁用提示原因与启用方法

在处理生产环境问题时&#xff0c;我们经常遇到“logging is disabled”这类提示。这通常意味着日志记录功能被意外或有意地关闭&#xff0c;导致关键的运行时信息、错误堆栈和调试线索丢失&#xff0c;使故障排查变得异常困难。理解其背后的原因并掌握重新启用日志的方法&…

作者头像 李华
网站建设 2026/4/30 12:44:49

探索快幕秀的奇妙世界:从签到墙到专业教程的全面体验分享

作为一名企业活动策划者&#xff0c;我经常需要寻找创新的方式来提升活动体验和宣传效果。最近&#xff0c;我接触到了"临时展快幕秀"服务&#xff0c;并在使用过程中积累了许多宝贵的经验。今天&#xff0c;我想通过这篇文章&#xff0c;与大家分享我的快幕秀之旅&a…

作者头像 李华
网站建设 2026/5/1 14:34:15

2026别错过!9个AI论文平台测评:专科生毕业论文+开题报告写作全攻略

随着2026年毕业季的临近&#xff0c;专科生们对论文写作的需求日益迫切。然而&#xff0c;面对选题困难、资料查找繁琐、格式规范不熟等问题&#xff0c;许多学生感到力不从心。为此&#xff0c;我们基于真实用户使用场景与最新技术发展&#xff0c;针对当前主流AI论文平台进行…

作者头像 李华
网站建设 2026/5/6 0:50:34

Polish1.72.247|AI图片编辑,全球超1亿次下载,比美图秀秀好用

Polish是一款专为寻求高效且易用编辑解决方案的用户打造的功能强大的AI照片编辑工具。它借助先进的人工智能技术&#xff0c;从分辨率、亮度与阴影、色彩平衡等多方面提升照片质量。用户只需一键操作&#xff0c;就能自动调整照片的亮度、对比度、饱和度等参数&#xff0c;获取…

作者头像 李华