news 2026/6/25 3:25:31

[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/6/18 9:35:33

从回调函数到Promise

最近在面试中遇到了很多关于 Promise 的问题,因为以前的业务在请求方面并不复杂,多数时候都是在用 async/await,对 Promise 的理解还是有所欠缺,最近重新学习了一下 Promise,尽量避免写成API式的文章,主要还…

作者头像 李华
网站建设 2026/6/6 15:33:49

java+vue基于springboot农产品溯源系统_AI问答 农产品销售网上商城系统 w01c2pa0-Pycharm vue django项目源码

目录农产品溯源系统概述技术架构核心功能模块项目源码特点扩展应用部署与二次开发开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!农产品溯源系统概述 基于SpringBoot和Vue的农产品溯源系统整合了生产、流通、销售全流程数据&a…

作者头像 李华
网站建设 2026/6/13 15:52:01

java+vue基于springboot宠物店活动报名系统 宠物领养管理系统_nz2f939x

目录系统概述核心功能模块技术实现要点数据库设计示例部署与扩展开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于SpringBoot和Vue的宠物店活动报名与领养管理系统,整合了宠物店日常运营中的活动管理与…

作者头像 李华
网站建设 2026/6/21 15:00:27

SG-CANFiber-120 (S)特点与功能介绍

一、核心定位与工作模式SG-CANFiber-120 (S) 是工业级单纤型 CAN 总线转光纤传输设备,核心功能是实现 CAN 总线电信号与光纤光信号的双向透明转换,支持环网、手拉手、点对点、星型四种组网方式,可自动识别连接类型无需手动配置。设备能将 CAN…

作者头像 李华