OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3221|回复: 1

[阿波罗F767] 阿波罗F767_通过PWM调节RGB屏亮度测试程序

[复制链接]

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2018-12-31 18:21:32 | 显示全部楼层 |阅读模式
有用户在使用RGB屏的时候不知道怎么调节RGB屏的液晶亮度
所以改了这个程序
需要注意的是
1.程序基于"LTDC LCD(RGB屏)实验"修改
2.对原子RGB屏而言,通过PB5复用为定时器输出PWM,通过修改PWM的占空比来控制屏的亮度
3.需要用户熟悉定时器输出PWM的方法和RGB屏的驱动方法,可参考F7开发文档的PWM输出实验和LTDC LCD(RGB屏)实验章节
整个测试程序最重要的是TIM3_CH2输出PWM部分,代码如下
[mw_shl_code=c,true]TIM_HandleTypeDef TIM3_Handler;         //定时器句柄
TIM_OC_InitTypeDef TIM3_CH2Handler;     //定时器3通道2句柄

//TIM3 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_PWM_Init(u16 arr,u16 psc)
{
    TIM3_Handler.Instance=TIM3;            //定时器3
    TIM3_Handler.Init.Prescaler=psc;       //定时器分频
    TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;//向上计数模式
    TIM3_Handler.Init.Period=arr;          //自动重装载值
    TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;
    HAL_TIM_PWM_Init(&TIM3_Handler);       //初始化PWM
   
    TIM3_CH2Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1
    TIM3_CH2Handler.Pulse=arr/2;            //设置比较值,此值用来确定占空比,
                                            //默认比较值为自动重装载值的一半,即占空比为50%
    TIM3_CH2Handler.OCPolarity=TIM_OCPOLARITY_LOW; //输出比较极性为低
    HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH2Handler,TIM_CHANNEL_2);//配置TIM3通道2
    HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_2);//开启PWM通道3
}

//定时器底层驱动,时钟使能,引脚配置
//此函数会被HAL_TIM_PWM_Init()调用
//htim:定时器句柄
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{
    GPIO_InitTypeDef GPIO_Initure;
        __HAL_RCC_TIM3_CLK_ENABLE();                        //使能定时器3
    __HAL_RCC_GPIOB_CLK_ENABLE();                        //开启GPIOB时钟
       
    GPIO_Initure.Pin=GPIO_PIN_5;                   //PB5
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;          //复用推完输出
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
        GPIO_Initure.Alternate=GPIO_AF2_TIM3;        //PB5复用为TIM3_CH2
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
}

//设置TIM通道4的占空比
//compare:比较值
void TIM_SetTIM3Compare2(u32 compare)
{
        TIM3->CCR2=compare;
}[/mw_shl_code]
修改占空比实现液晶屏的亮度变化通过main函数的while(1)实现:
[mw_shl_code=c,true]        while(1)
        {
                delay_ms(10);                
                if(dir)led0pwmval++;                                //dir==1 led0pwmval递增
                else led0pwmval--;                                    //dir==0 led0pwmval递减
                if(led0pwmval>300)dir=0;                        //led0pwmval到达300后,方向为递减
                if(led0pwmval==0)dir=1;                            //led0pwmval递减到0后,方向改为递增
                TIM_SetTIM3Compare2(led0pwmval);        //修改比较值,修改占空比,从而调节亮度
        }[/mw_shl_code]



阿波罗F767_通过PWM调节RGB屏亮度测试程序.rar

12.73 MB, 下载次数: 436

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

465

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2142
金钱
2142
注册时间
2013-1-11
在线时间
504 小时
发表于 2019-1-29 16:05:59 | 显示全部楼层
知识是你最好的财富
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表