STM32基础8--通用定时器(PWM控制LED)

目录

PWM控制LED硬件电路

PWM周期与LED闪烁

PWM低电平与LED的亮度等级 

PWM实现256个等级的LED亮度呼吸灯

STM32CubeMx配置通用定时器     

代码功能实现


        从STM32基础7--通用定时器,STM32通用定时器可以产生PWM波形,从而控制LED亮度。下面我们更加详细的了解一下,PWM对LED的控制。

PWM控制LED硬件电路

        在下面的原理图中,可以看到LED0与LED1连接到STMF407的PF9与PF10引脚上。在电路中,当PF9,PF10分别为低电平的时候,LED0与LED分别导通,也就是这个电路中,PWM周期的低电平周期,LED会被导通。

PWM周期与LED闪烁

        在STM32F407中,当我们使用PWM1模式时,进行如下的设置。

        当我们使用逻辑分析仪(LA)抓取,可以得到如波形,也就是说Pulse设置的为低电平的时间长度。当我们下载程序进开发板时,发现LED0会一闪一闪的,时间间隔1S(PWM的周期为1S),亮的时间很短。

             由于PWM的周期为1S的时间间隔(1Hz),如果人眼希望看不到闪烁就需要将PWM的周期缩小 ,也就是PWM的频率加快,让人眼觉察不到LED在闪烁。按照显示屏的设定是在60HZ,虽然人会觉察不到闪烁。但在70到150赫兹范围内的闪烁确实会导致生产力下降和健康影响。而且前最新的研究结论是频率达到2kHz以上认为对身体不产生影响,通过视觉对身体产生不良影响。 

        而按照国家规定的读写作业台灯性能要求需要达到3125Hz才可以免除考核。

 

PWM低电平与LED的亮度等级 

         当我们使用的PWM周期达到2KHz,以后人眼再也不会感受到LED在闪烁,而且健康也有了保证。但是这个时候我们会发现另外一个问题,就是LED的亮度等级。是什么决定了LED亮度等级?没错就是自动重装计数器的数值。Pulse值决定PWM的低电平的长度,Pulse不能超过自动重装计数器。

         如果我们需要将光度等级分为256个等级(0-255),也就是说自动重装计数器的值需要设置为255。

        定时器频率 =时钟频率 /((预分频+1) *(自动重装计数器+1)) 

        预分频 = 时钟频率/((定时器频率) *(自动重装计数器+1)) = 84Mhz /(2Khz* (255+1))-1 =163 

PWM实现256个等级的LED亮度呼吸灯

        呼吸灯是控制LED从低亮度到高亮度,然后在从高亮度到低亮度。因此需要不断的,改变Pulse的数值。

STM32CubeMx配置通用定时器     

开启PWM输出通道

 设置PWM输出

开启定时器中断

中断等级设置 

 

         注:

                1)设定与STM32基础7--通用定时器不一样的地方在于,PWM生成固定的频率。而呼吸灯需要,不断的刷新Pulse的值,因此需要在定时器回调函数中,判断并且刷新低电平的时间。

                2)代表亮度等级为0,也就是LED不亮。

代码功能实现

        main函数中,启动定时器并且开启PWM输出

 

        定义变量控制等级与亮度方向

 

        实现回调函数 

 

 

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

颖川初尘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值