一、实验目的
- 熟悉开发环境
- 控制LED灯
- 了解PWM原理
二、实验环境
硬件:STM32开发板、CMSIS-DAP调试工具
软件:ARM的IDE:Keil C51
三、实验内容
1.实验原理
PWM简称为脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。一个周期内高水平的持续时间占总周期的比例称为占空比,通过修改占空比,可以改变输出的等效模拟电压。脉冲调制涉及两个重要的参数:输出频率和占空比,频率越高,最终输出的“连续性”越好,越接近模拟信号的效果;占空比越大则模拟出的电压越大。
通过控制不同的PWM占空比,控制某个颜色的LED的亮度,以这样的方式就可以通过设置aRGB的值控制最后输出的LED灯效。
2.实验代码
如图1代码,设置LED呼吸灯效果的函数breathEffect,通过改变定时器的比较值来产生呼吸灯效果。第一个循环从0递增到510,调用__HAL_TIM_SET_COMPARE函数来设置定时器的比较值,使用HAL_Delay函数延迟,随着比较值的增加,输出信号的频率也会增加。第二个循环从511递减到1,同样调用__HAL_TIM_SET_COMPARE函数来设置定时器的比较值,并使用HAL_Delay函数延迟,随着比较值的减小,输出信号的频率也会减小。
图 1
如图2代码,通过while循环调用breathEffect()函数为每个通道实现呼吸灯效果。控制LED灯颜色循环切换,从红灯变成绿灯,再变成蓝灯。
图 2
3.实验结果
如图3、图4、图5所示,在开发板上,控制LED灯颜色循环切换,从红灯变成绿灯,再变成蓝灯,切换过程带有呼吸效果。
图 3
图 4
图 5
四、实验小结
本次实验中通过PWM,通过启动定时器的通道实现控制LED灯颜色切换,但是实验过程中LED灯呼吸效果,即亮度变化较不明显。