[Micropython][TPBasic F103]呼吸灯实例 | 典型实例 | 技术支持 | MicroPython


当前位置:首页>技术支持>典型实例>[Micropython][TPBasic F103]呼吸灯实例

[Micropython][TPBasic F103]呼吸灯实例

原创版权归山东萝卜科技有限公司所有,转载必须以链接形式注明作者和原始出处


  一、什么是TPBasicF103


  TPYBasicF103是由TurnipSmart公司制作的一款STM32开发板,它基于STM32F103单片机,通过USB接口进行数据传输。该开发板可在3V-10V之间的电压正常工作。


  TPYBasicF103让用户可以通过C语言轻松控制微控制器的各种外设,比如LED等,读取管脚电压等等.


  二、利用TPBasicF103完成呼吸灯


  1、具体要求


  利用TPBasicF103完成呼吸灯


  (1)学习stm32芯片I/O配置


  (2)学习stm32芯片定时器设置


  (3)学习PWM智能控制led灯


  2、熟悉所需器件


  TPBasicF103开发板一块


  LED灯一个


  杜邦线两条


  3、所需器件1介绍


  将板子boot0与GND用跳线帽短接,LED灯正极接3.3V电源,负极接板子C7引脚(具体电路可根据程序自行选择引脚)


  blob.png



  三、制作主要过程


  https://v.qq.com/x/page/g0397ahd5cj.html


  1、制作流程


  呼吸灯原理:LED灯光在MCU的控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸。呼吸灯分为两个过程:亮度有暗到亮(模拟吸气过程),在由亮到暗(模拟呼气过程)


  占空比=高电平所占时间/周期T。我们就是通过控制占空比来控制的灯亮灭情况,看起来就像人在呼吸的样子。整定一个固定的周期,然后让高低电平延时的时间之和跟这个周期相等就好了。


  PWM控制led实现呼吸灯实际是欺骗人眼和模拟正弦波的过程。


  PWM波的频率是某一个固定的值,但是高低电平所占比例(占空比)会根据用户设定而变化。假设高电平灯点亮,低电平熄灭,那么在PWM波一个周期内灯点亮的时间就等于周期*占空比。调整占空比,就可以控制LED在一个周期内的点亮时间。由于PWM波频率很高,超出人眼分辨速度,那么在人眼中就是连续的灯光,按照渐变占空比变化,在人眼中就可以表现为亮度的变化。


blob.png


  这是STM32数据手册上对TIM3通用定时器复用功能重映象的描述,假设让PA6作为PWM输出,从图中可以看出PA6对应TIM3的通道1,使能TIM3通道1的函数为:TIM_OC1Init();同样的,如果想要使能PA7,它对应的是TIM3的通道2,那么使能通道2的函数便是:TIM_OC2Init();以此类推,需要注意,使能不同定时器不同通道的函数是有一点小差别的,防止在程序中调用TIM_OC1Init()函数来使能TIM3通道2这种情况的发生。


  2、具体代码:


#include "public.h"
#include "pwm.h"
#include "systick.h"
 
 
int main()
{    
      u8 fx=1;
      u32 ti=0;        
      pwm_init();
      while(1)
      {
           delay_ms(10);
           if(fx==1)        
           {
                 ti++;
                 if(ti>300)       
                 {
                      fx=0;
                 }
           }
           else
           {
                 ti--;
                 if(ti==0)
                 {
                      fx=1;
                 }
           }
           TIM_SetCompare2(TIM3, ti);
      }
}

呼吸灯.zip