4. [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引脚(具体电路可根据程序自行选择引脚)

三、制作主要过程



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

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

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

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

这是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);
          }
}

..LINK: http://www.tpyboard.com/ueditor/php/upload/file/20170502/1493724451470181.zip