news 2026/4/3 6:09:33

[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/1 20:09:18

发票全生命周期管理:电子发票合规、验真与抵扣闭环

摘要:在数字化发票改革全面推进的背景下,电子发票已成为企业经济业务核算的核心凭证,其全生命周期管理的规范性直接关联财务合规、成本管控与税务风险防控。 一、引言:电子发票全生命周期管理——财务合规与降本增效的双重诉求 随…

作者头像 李华
网站建设 2026/3/31 15:24:24

直播回顾 | 从生成到润色,AI让企业标准编写更简单!

直播回顾2026年2月5日下午14:30,标准通推出了新一期标准通大讲堂——“从生成到润色,AI让企业标准编写更简单!”,提高您的标准编写效率!本次直播以线上直播的形式与广大用户见面。通过系统演示,带您体验数字…

作者头像 李华
网站建设 2026/4/2 9:03:34

PCI-DSS合规性挑战:支付行业财务安全的国际标准遵循

摘要:在数字支付场景持续拓展的当下,支付行业财务安全已成为企业风险防控的核心阵地。PCI-DSS(支付卡行业数据安全标准)作为国际通用的支付卡数据安全规范,其合规性建设不仅关乎企业的经营合法性,更深度关联财务成本管控、业财协同…

作者头像 李华
网站建设 2026/3/27 3:48:05

AI量化交易:从数据到决策的技术原理全景解析

AI量化交易:从数据到决策的技术原理全景解析 当市场信息以光速流动,决策的胜负已从分钟缩短到毫秒,AI量化交易正成为资本市场中的“速度与智慧”之战。一套精心设计的AI量化系统,每秒可处理数百万条市场数据,在人类无法察觉的瞬间完成决策。 核心原理在于构建一个能够从市…

作者头像 李华
网站建设 2026/3/27 8:02:17

java+vue基于springboot城市化自修室自习室管理系统_9e2d6549

目录技术栈与框架核心功能模块系统特点应用场景开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术栈与框架 该系统采用Java作为后端开发语言,基于Spring Boot框架构建,简化了配置和依赖管理。前端使用…

作者头像 李华