PWM控制LED亮度变化的原理(超详解)

PWM控制LED亮度变化的原理

通过ARR寄存器来设定预装载值,以确定循环频率和周期,计数器寄存器CNT从0开始计数,设定一个CCR寄存器的值,来跟CNT的计数值进行比较,当CNT的值小于CCR寄存器,输出低电平,当CNT大于CCR的值,小于ARR(还在这一个周期之内),就输出高电平。

特别注意:这种比较结果是对于PWM2的向上计数而言的,对于PWM1而言是相反的,应该要特别注意!!!!!!!!!
PWM输出模式有两个如下
配置相关的寄存器的位是不同的!
在这里插入图片描述

当然我们知道,LED得到低电平发光,高电平不发光!
占空比我们已经知道了,就是高电平的时间占整个周期的比值,占空比越高,LED就越暗,所以我们要控制占空比来控制LED亮暗变化!

PWM控制LED亮度变化的原理(超详解)_第1张图片

来看看正点原子的一段代码

	while(1)
	{
     
 		delay_ms(10);	 
		if(dir)led0pwmval++;
		else led0pwmval--;

 		if(led0pwmval>300)dir=0;
		if(led0pwmval==0)dir=1;			 
		TIM_SetCompare2(TIM3,led0pwmval);		   
	}	 

怎么来控制呢?看到程序里面用设置led0pwmval的值来设定占空比,追根溯源它的那个函数我们看到,它是把led0pwmval(参数为如图Compeare2)的值给了CCR,所以我们看到当led0pwmval值不断从0-300增大时,CCR也不断增大,这也就意味着,低电平占的时间越来越多,所以亮度由暗一直到亮,当然这一个脉冲周期可是很短很短的,所以我们只能看到LED的这种亮度变化了。
PWM控制LED亮度变化的原理(超详解)_第2张图片
以上就是PWM控制LED亮度变化的详细介绍,后续陆续更新,敬请关注!

你可能感兴趣的:(嵌入式,单片机,PWM,嵌入式)