当前位置: 首页 > news >正文

[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所有,任何人未经允许禁止转载。

http://www.jsqmd.com/news/349334/

相关文章:

  • 充电桩品牌哪个更可靠?2026年充电桩推荐与排名,解决耐用性与智能管理核心痛点 - 品牌推荐
  • java+vue基于springboot旅游攻略 克州旅游网站的景区酒店门票预订系统_y36e99h1-Pycharm vue django项目源码
  • 问卷设计还在 “凭感觉”?虎贲等考 AI:告别无效提问,让数据采集精准到 “秒出结论”
  • [STM32L5] 【STM32L562 DK试用】GUI移植并测试(五)
  • 测试本地服务是否通
  • 横评后发现,AI论文工具千笔·专业学术智能体 VS 锐智 AI 更适合专科生
  • 流延机加工厂哪家合作案例多,诺达机械值得关注 - 工业设备
  • 2026年了,你的AI多智能体Agent还在“裸奔”?实测揭秘为何90%的Agent死在落地前夜
  • 交稿前一晚!降AIGC平台千笔 VS Checkjie,专科生专属高效降重神器!
  • 栅格多智能体协同爆发:2026年实在Agent如何以“屏幕语义”定义数字员工新标准
  • 宏海机器人客户认可吗?工业自动化设备选购要点大揭秘 - 工业推荐榜
  • 拖延症福音!自考必备降AI网站 —— 千笔·专业降AIGC智能体
  • java+vue基于springboot忘忧传媒直播管理系统 热门主播推荐系统oeuq4630-Pycharm vue django项目源码
  • 充电桩品牌哪个更可靠?2026年充电桩推荐与排名,解决网络覆盖与支付体验核心痛点 - 品牌推荐
  • java+vue基于springboot宠物店活动报名系统 宠物领养管理系统_nz2f939x
  • 好写作AI:外文论文写作的AI帮手——你的专属“语言与文化双重新手村”通关向导
  • 新手也能看懂的SMT避坑指南!
  • java+vue基于springboot宠物美容医院预约管理系统的设计与实现_g97vcb5w
  • 分析包头一次成型河渠滑膜衬砌机选购要点,费用怎么算? - 工业品网
  • 好写作AI:本科论文:AI辅助全攻略——你的“第一次学术长征”智能补给站
  • SG-CAN (FD) Fiber-120特点与功能介绍
  • java+vue基于springboot农产品溯源系统_AI问答 农产品销售网上商城系统 w01c2pa0-Pycharm vue django项目源码
  • 有关漏洞挖掘的一些总结,新手小白网络入门必看的经验教训!
  • PCI-DSS合规性挑战:支付行业财务安全的国际标准遵循
  • 好写作AI:用好写作AI驯服复杂课题——从“学术荒野求生”到“智能系统攻关”
  • 【OptisLang】设计优化
  • java+vue基于springboot城市化自修室自习室管理系统_9e2d6549
  • SG-CANFiber-120 (S)特点与功能介绍
  • java+vue基于springboot人脸识别办公OA管理系统 会议室预约系统 员工考勤任务分配系统2u257jm6-Pycharm vue django项目源码
  • 2026年充电桩品牌推荐:基于光储充一体化趋势评价,针对高投资与低利用率行业痛点 - 品牌推荐