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