1. 呼吸灯原理分析:
模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面),按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)。
2.呼吸灯程序设计:
就是改变这40ms中,亮和灭所占的百分比(40ms相对不柔和,20ms效果柔和)。亮的百分比多,人眼看到的就亮,反之就是暗(实验,为了提高呼吸灯的柔和效果,采用设置20ms一个周期,20ms内调整亮和灭的比例)
因此程序设计:
1.5S需要1500/20=75个周期,75个周期中,亮度百分比有0%增长到100%,因此每个周期增长时间为20ms/75=266us(点亮)。
熄灭的原理,正好相反,熄灭时间增长。程序中需要两个循环,一个用来点亮一个用来熄灭。
一、配置cubemx
二、公式
Tout=((psc)*(arr))/Tclk
Tclk 是对应的时钟频率,单位Mhz
Tout单位是us
三、代码实现(pwm)
for(i=0;i<500;i++)
{
__HAL_TIM_SetCompare(&htim5,TIM_CHANNEL_1,i);
HAL_Delay(1);
}
for(i=500;i>0;i--)
{
__HAL_TIM_SetCompare(&htim5,TIM_CHANNEL_1,i);
HAL_Delay(1);
}
四、
五、如何通过定时器实现与人体类似共振的呼吸灯(看着就难受的呼吸灯)?
思路:首先必须做到1us,除了在定时器的配置中理论上实现1us,还需要在
void TIM1_UP_IRQHandler(void);
中减少中断 时间,减少跳转的次数也就是。
建议:修改该中断函数,添加
__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);
return;
不执行,HAL_TIM_IRQHandler(&htim1);
VID_20230326_135129
六、详细代码工程:
https://download.youkuaiyun.com/download/weixin_52451652/87614542