1. 摘要

本文档主要用来介绍如何通过PWM控制屏幕背光,通过PWM占空比达到控制背光的目的

2. 准备工作

可正常运行的屏幕显示程序

屏幕背光调节范围20-100%,20k PWM频率

3. 实施

不管是采用那种GUI框架开发,我们一般都需要对屏幕背光做控制,背光的控制是通用的,例如我们在emwin工程和TouchGFX工程下,都是采用同一套背光可控制逻辑和代码,背光的最低亮度根据自己的实际应用做限制,例如我的工程是25%-100%背光可调节。以STM32H743控制800*480的显示屏为例,使用TIM2的一个通道产生PWM来控制屏幕背光。要清除TIM作为PWM运行的控制和几个计算以及寄存器的配置。

4. 代码实现

首先我们需要对外有一个初始化接口,有一个改变占空比的接口,

void BSP_BL_Init(void)

{

/* Compute the prescaler value to have TIM1 counter clock equal to 20000000 Hz */

uhPrescalerValue = (uint32_t)(SystemCoreClock / (2*20000000)) - 1;

TimHandle.Instance = TIMx;

TimHandle.Init.Prescaler         = uhPrescalerValue;

TimHandle.Init.Period            = PERIOD_VALUE;

TimHandle.Init.ClockDivision     = 0;

TimHandle.Init.CounterMode       = TIM_COUNTERMODE_UP;

TimHandle.Init.RepetitionCounter = 0;

if (HAL_TIM_PWM_Init(&TimHandle) != HAL_OK)

{

/* Initialization Error */

Error_Handler();

}

/*##-2- Configure the PWM channels #########################################*/

/* Common configuration for all channels */

sConfig.OCMode       = TIM_OCMODE_PWM1;

sConfig.OCPolarity   = TIM_OCPOLARITY_HIGH;

sConfig.OCFastMode   = TIM_OCFAST_DISABLE;

sConfig.OCNPolarity  = TIM_OCNPOLARITY_HIGH;

sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;

sConfig.OCIdleState  = TIM_OCIDLESTATE_RESET;

/* Set the pulse value for channel 1 */

sConfig.Pulse = 0;//1000-1;//10;//PULSE1_VALUE;

if (HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_1) != HAL_OK)

{

/* Configuration Error */

Error_Handler();

}

if (HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_1) != HAL_OK)

{

/* PWM Generation Error */

Error_Handler();

}

}

初始化TIM外设的底层驱动,配置时钟,通道,周期等。并开启PWM

对外的占空比改变接口主要是用来刷新PWM的占空比,达到调节背光的目的,

void BSP_vLcdBlCtrl(uint32_t PulseValue)

{

if((PulseValue >= 10) && (PulseValue <= 1000))/**校验设置范围,**/

{

sConfig.Pulse = PulseValue;

}

else

{

sConfig.Pulse = 500;/**50%**/

}

if (HAL_TIM_PWM_ConfigChannel(&TimHandle, &sConfig, TIM_CHANNEL_1) != HAL_OK)/**配置通道**/

{

/* Configuration Error */

Error_Handler();

}

HAL_TIM_PWM_Stop(&TimHandle, TIM_CHANNEL_1);

if (HAL_TIM_PWM_Start(&TimHandle, TIM_CHANNEL_1) != HAL_OK)/**开启PWM***/

{

/* PWM Generation Error */

Error_Handler();

}

}

一般触摸屏我们固定周期没有触摸就会将背光调低,这时候屏幕会变暗,一旦有触摸,重新将背光调亮,

PWM也可以采用中断,这里没有采用中断,都可以实现。在三个项目上都是采用的这个背光控制逻辑和代码。

屏幕背光的PWM控制相关推荐

  1. android关闭屏幕背光,Android 的背光控制

    echo 23 > /sys/devices/platform/atmel_lcdfb.0/backlight/backlight/brightness http://android.git.k ...

  2. Android应用开发(21)屏幕背光控制

    Android应用开发学习笔记--目录索引 最近各手机厂商都在宣传万级调光,宣传数字越来越大,但是到底背光调节平滑度体验如何呢? 如最近realme 11 pro+ (MTK平台天玑7050),宣传2 ...

  3. 松下伺服电机pwm控制连线_从零打造树莓派家庭监控 (一): 伺服电机控制

    本文首发自我的博客 MikeTech 现在很多家庭喜欢购买一个摄像头来监控家里的情况,但是往往却无法了解购买第三方摄像头的安全性,摄像头泄露的新闻也每过一段时间就会出现在人们的视野当中.如果购买的摄像 ...

  4. linux PWM驱动屏幕亮度及pwm子系统框架(Linux驱动开发篇)

    1.对象 imx6ull单片机,控制其下面的pwm3的外设.关于对象的详细介绍看裸机pwm控制屏幕亮度 在dtsi中的位置 /soc/aips1/pwm3 pwm3: pwm@02088000 { c ...

  5. 树莓派GPIO和PWM控制教程

    树莓派GPIO和PWM 1. 目的 在汽车电子开发中,CAN通讯是很难避开的一个技术点,当前CAN已经形成了行业内较为稳定的开发及相关测试验证方法,其中一种较为主流的就是使用CANoe和开发相应的CA ...

  6. MCGS用脚本设置屏幕背光和声音

    MCGS用脚本设置屏幕背光和声音 用MCGS软件控制TPC的声音.背光及IP地址设置,方便在用户工程中对系统的控制. 运行环境为WINCE系统,测试型号:1061Ti和1062K. (1)打开 设备窗 ...

  7. AMT49702:双DMOS全桥式电动机驱动器,为低压步进电机和双/单高电流直流电机的PWM控制而设计

    汽车级双极步进电机驱动器或双直流电机驱动器IC AMT49702,新产品专为低压步进电机和双/单高电流直流电机的脉冲宽度调制(PWM)控制而设计.AMT49702的输出电流可达每通道1A,工作电压为3 ...

  8. python舵机控制程序_树莓派PWM控制舵机的两种方式

    PWM控制舵机简介 通常情况下,伺服电机(舵机)是由一个标准的直流系统和一个内部反馈控制装置(一个减速齿轮和电位计)来组成的.伺服电机(舵机)的主要作用是将齿轮轴旋转到一个预定义的方向上.伺服电机(舵 ...

  9. 基于FPGA的直流电机PWM控制+毕业论文

    基于FPGA的直流电机PWM控制+开题+毕业论文+源码(VHDL or verilog) 基于FPGA的直流电机PWM控制电路主要由四部分组成:控制命令输入模块.控制命令处理模块.控制命令输出模块.电 ...

最新文章

  1. java 魔法王国,游历魔法王国
  2. win11怎么使用ie浏览器?(ie兼容模式)(win11还是支持不好啊)
  3. 在Winform中播放视频等【DotNet,C#】
  4. Linux下paste命令详解
  5. vue子组件改变父组件的值
  6. 谈一谈flex布局使用中碰到的一些问题
  7. 计算机考研保护一志愿,考研良心大学,保护一志愿的考研名校!
  8. WDM驱动程序入门(很详细)
  9. 30个ies光域网带图_15个让你脚下更细腻的经典控球训练
  10. python 解析模块脚本_Python HTMLParser模块解析html获取url实例
  11. JavaWeb:tomcat知识以及遇到的一些小问题
  12. 高级维修电工实训装置
  13. ISO7816协议中APDU指令解析
  14. 音乐播放器代码和网页播放器代码
  15. 神经网络参数优化算法,神经网络损失函数设计
  16. 一点点读懂regulator(四)
  17. java流重定向如何分类,Java 文件流與標准流之間的重定向
  18. 【愚公系列】2022年10月 .Net Core使用cpolar内网穿透功能实现钉钉回调事件的监听
  19. 2020年网络安全国赛解析(仅个人想法)
  20. 2009.6.29在淘宝网里订购了多普达P4550手机

热门文章

  1. Android 开发-创建app
  2. 微信公众平台最实用的工具和技巧大集合
  3. IGP LDP同步技术剖析
  4. 浏览器兼容问题及解决方法
  5. 微信小游戏马甲包过审(马甲包过包)
  6. HIT-2022年春季学期《软件构造》Lab 1实验心得
  7. 速度与压缩比如何兼得?压缩算法在构建部署中的优化
  8. 高级中学计算机配置标准,江苏省高级中学艺术装备标准
  9. pvm虚拟机基本原理
  10. js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析