HAL库--定时器--PWM呼吸灯实验和非PWM呼吸灯实验

文章详细分析了呼吸灯的工作原理,通过模拟人体呼吸节奏来设计程序。使用定时器和PWM技术,调整亮灭比例以达到柔和的视觉效果。文中提供了Cubemx配置、计算公式以及代码实现,并讨论了如何通过优化中断函数来实现更精确的1us控制,以达到与人体共振的呼吸灯效果。附带了一个详细的代码工程链接供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K-Pioneer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值