news 2026/4/26 21:41:36

[STM32L5] 【STM32L562 DK试用】基础外设体验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32L5] 【STM32L562 DK试用】基础外设体验

开发板自带了一块240*240分辨率的触摸屏:



本次基于官方demo进行修改,从而在屏幕上显示相应的文字。首先进行系统和时钟的初始化:

复制

  1. HAL_StatusTypeDef HAL_Init(void)
  2. {
  3. HAL_StatusTypeDef status = HAL_OK;
  4. /* Set Interrupt Group Priority */
  5. HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_3);
  6. /* Insure time base clock coherency */
  7. SystemCoreClockUpdate();
  8. /* Use SysTick as time base source and configure 1ms tick (default clock after Reset is MSI) */
  9. if (HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
  10. {
  11. status = HAL_ERROR;
  12. }
  13. else
  14. {
  15. /* Init the low level hardware */
  16. HAL_MspInit();
  17. }
  18. /* Return function status */
  19. return status;
  20. }

然后进行相关HMI设备和LED等的初始化:

复制

  1. static void SystemHardwareInit(void)
  2. {
  3. /* Init LEDs */
  4. if (LedInitialized != SET)
  5. {
  6. if (BSP_LED_Init(LED9) != BSP_ERROR_NONE)
  7. {
  8. Error_Handler();
  9. }
  10. if (BSP_LED_Init(LED10) != BSP_ERROR_NONE)
  11. {
  12. Error_Handler();
  13. }
  14. LedInitialized = SET;
  15. }
  16. /* Init User push-button in EXTI Mode */
  17. if (ButtonInitialized != SET)
  18. {
  19. if (BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI) != BSP_ERROR_NONE)
  20. {
  21. Error_Handler();
  22. }
  23. ButtonInitialized = SET;
  24. }
  25. /* Initialize the LCD */
  26. if (LcdInitialized != SET)
  27. {
  28. LCD_UTILS_Drv_t lcdDrv;
  29. /* Initialize the LCD */
  30. if (BSP_LCD_Init(0, LCD_ORIENTATION_PORTRAIT) != BSP_ERROR_NONE)
  31. {
  32. Error_Handler();
  33. }
  34. /* Set UTIL_LCD functions */
  35. lcdDrv.DrawBitmap = BSP_LCD_DrawBitmap;
  36. lcdDrv.FillRGBRect = BSP_LCD_FillRGBRect;
  37. lcdDrv.DrawHLine = BSP_LCD_DrawHLine;
  38. lcdDrv.DrawVLine = BSP_LCD_DrawVLine;
  39. lcdDrv.FillRect = BSP_LCD_FillRect;
  40. lcdDrv.GetPixel = BSP_LCD_ReadPixel;
  41. lcdDrv.SetPixel = BSP_LCD_WritePixel;
  42. lcdDrv.GetXSize = BSP_LCD_GetXSize;
  43. lcdDrv.GetYSize = BSP_LCD_GetYSize;
  44. lcdDrv.SetLayer = BSP_LCD_SetActiveLayer;
  45. lcdDrv.GetFormat = BSP_LCD_GetFormat;
  46. UTIL_LCD_SetFuncDriver(&lcdDrv);
  47. /* Clear the LCD */
  48. UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
  49. /* Set the display on */
  50. if (BSP_LCD_DisplayOn(0) != BSP_ERROR_NONE)
  51. {
  52. Error_Handler();
  53. }
  54. LcdInitialized = SET;
  55. }
  56. /* Initialize the TouchScreen */
  57. if (TsInitialized != SET)
  58. {
  59. TS_Init_t TsInit;
  60. /* Initialize the TouchScreen */
  61. TsInit.Width = 240;
  62. TsInit.Height = 240;
  63. TsInit.Orientation = TS_ORIENTATION_PORTRAIT;
  64. TsInit.Accuracy = 10;
  65. if (BSP_TS_Init(0, &TsInit) != BSP_ERROR_NONE)
  66. {
  67. Error_Handler();
  68. }
  69. /* Configure TS interrupt */
  70. if (BSP_TS_EnableIT(0) != BSP_ERROR_NONE)
  71. {
  72. Error_Handler();
  73. }
  74. TsInitialized = SET;
  75. }
  76. }



调用屏幕API进行显示:

复制

  1. static void Display_DemoDescription(void)
  2. {
  3. char desc[60];
  4. /* Set font */
  5. UTIL_LCD_SetFont(&Font20);
  6. /* Clear the LCD */
  7. UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
  8. /* Set the LCD Text Color */
  9. UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKBLUE);
  10. UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_WHITE);
  11. /* Display LCD messages */
  12. UTIL_LCD_DisplayStringAt(0, 10, (uint8_t *)"STM32L562E-DK BSP", CENTER_MODE);
  13. UTIL_LCD_DisplayStringAt(0, 35, (uint8_t *)"drivers example", CENTER_MODE);
  14. /* Draw Bitmap */
  15. UTIL_LCD_DrawBitmap(80, 65, (uint8_t *)st**);
  16. UTIL_LCD_SetFont(&Font8);
  17. UTIL_LCD_DisplayStringAt(0, 220, (uint8_t *)"Copyright (c) STMicroelectronics 2019", CENTER_MODE);
  18. UTIL_LCD_SetFont(&Font12);
  19. UTIL_LCD_FillRect(0, 145, 240, 50, UTIL_LCD_COLOR_BLUE);
  20. UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);
  21. UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);
  22. UTIL_LCD_DisplayStringAt(0, 135, (uint8_t *)"Hello 21IC", CENTER_MODE);
  23. UTIL_LCD_DisplayStringAt(0, 150, (uint8_t *)"Press User push-button", CENTER_MODE);
  24. UTIL_LCD_DisplayStringAt(0, 165, (uint8_t *)"to start :", CENTER_MODE);
  25. sprintf(desc,"%s example", BSP_examples[DemoIndex].DemoName);
  26. UTIL_LCD_DisplayStringAt(0, 180, (uint8_t *)desc, CENTER_MODE);
  27. }



显示效果:



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

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

[STM32L5] 【STM32L562 DK试用】GUI移植并测试(五)

有成果还没摸索明白图片切换模拟表盘--------------------- 作者:地瓜patch 链接:https://bbs.21ic.com/icview-3441590-1-1.html 来源:21ic.com 此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载…

作者头像 李华
网站建设 2026/4/17 13:23:49

java+vue基于springboot人脸识别办公OA管理系统 会议室预约系统 员工考勤任务分配系统2u257jm6-Pycharm vue django项目源码

目录项目概述技术栈核心功能项目结构部署与运行扩展性适用场景开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!项目概述 该项目基于SpringBoot、Vue和Django技术栈,整合了人脸识别技术,实现了办公自动化…

作者头像 李华
网站建设 2026/4/18 15:30:35

交稿前一晚!降AIGC平台千笔 VS Checkjie,专科生专属高效降重神器!

在AI技术迅速发展的今天,越来越多的学生开始借助AI工具辅助论文写作,以提高效率和质量。然而,随着学术审查标准的不断提升,AI生成内容的痕迹越来越容易被识别,导致论文AI率超标、重复率过高,甚至影响最终成…

作者头像 李华
网站建设 2026/4/15 16:46:20

通俗理解U-Net架构

目录 引言:为什么U-Net如此重要?U-Net的历史背景与诞生故事CNN与FCN基础回顾:从图像分类到分割U-Net整体架构详解:那条经典的“U”形曲线编码器(收缩路径)深入解析:特征提取的“下沉”过程解码…

作者头像 李华
网站建设 2026/4/26 11:46:43

AI写论文大测评!4款实用AI论文生成工具,哪款适合写期刊论文?

在2025年的学术写作智能化浪潮中,越来越多的人开始依赖AI论文写作工具来完成自己的学术研究。许多现有工具在处理硕士和博士论文等长篇研究时,往往缺乏必要的理论深度或逻辑严谨性,普通的AI写论文助手难以满足专业性的论文撰写需求。 AI论文…

作者头像 李华