PWM实验

2019-08-17 08:16发布

调节占空比从而实现亮度变化有点不理解。。。
设置CCRX的值来实现占空比的改变,占空比改变不是改变了高电平和低电平的相对时间吗,就是亮和灭的的转换,为什么实现的是亮度的变化
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
Mascreda
2019-08-17 12:15
设置CCRX的值来实现占空比的改变,是连续变化的,高电平和低电平的相对时间的变化也是连续改变的,亮和灭的转换也是连续的,加上人眼睛的视觉残留现象就会感觉LED的亮度在变化。
int main(void)
{
u16 led0pwmval=0;
u8 dir=1;
delay_init();  //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置 NVIC 中断分组 2
uart_init(115200); //串口初始化波特率为 115200
LED_Init();  //LED 端口初始化
TIM3_PWM_Init(899,0); //不分频,PWM 频率=72000/900=80Khz
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 这个值设置为 PWM 比较值,也就是通过 led0pwmval 来控制 PWM 的占空比,然后控制 led0pwmval 的值从 0 变到 300,然后又
从 300 变到 0,这个值就是CCRX的值,在循环里一直变化的。以上为个人理解。

一周热门 更多>