[STM32U3] 【STM32U385RG 测评】PWM调节屏幕亮度

[复制链接]
 楼主| lulugl 发表于 2025-7-20 16:01 | 显示全部楼层 |阅读模式
【前言】
在评测计划中有使用pwm来实现调节屏幕亮度,因此本篇为如何使用HMI实现对屏的亮度调节。实现原理为,使用TouchGFX Designer添加一个滑动控件,通过滑动来修改pwm的占空比,实现ST7789的BLK的电压实现。
本次工程在上一篇试用的基础上创建:

【GUI设计】
1、向屏幕添加slider控件,修改背景图标,适配屏幕大小,并修改其最大最小值:
12264687c9f0bf33dd.png
2、同时添加一个Text组件,让其动态显示当前亮度。
51198687c9f4ce80c6.png
3、同时添加图片以及其他说明标签,最后设计的界面如下:
81212687c9f8504628.png
4、添加slider值变化时的虚拟函数:
91032687ca02758db9.png

设计好后重新生成工程。
【代码设计】
1、首先在screenview.hpp中添加virtual void funChange(int value);
4425687ca113c253b.png
2、在screenview.cpp中实现,其代码如下:
  1. void screenView::funChange(int value)
  2. {
  3.     int pwmVal = value * 5;
  4.     __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_3, pwmVal);
  5.     Unicode::snprintf(textLightBuffer,TEXTLIGHT_SIZE, "%d", value);
  6.     textLight.invalidate();
  7. }
下载后实现效果如下:
98929687ca1b5471b8.jpg
调节后效果如下:
71447687ca1d684c92.jpg
【总结】
TouchGFX可以非常方便的实现HMI,提供了非常方便的控制,在少量的代码下,轻松实现对屏幕的的亮度调节。

53466687c9fed2160f.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

830

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部