stm32f103呼吸灯(PWM脉冲宽度调制)

stm32f103呼吸灯(PWM脉冲宽度调制)

火车在响沙湾

已于 2022-09-06 15:32:54 修改

5116
 收藏 55
分类专栏: stm32 文章标签: stm32 调制与编码策略 arm keil mdk
版权

stm32
专栏收录该内容
11 篇文章2 订阅
订阅专栏
stm32f103呼吸灯(PWM脉冲宽度调制)
一、PWM脉冲宽度调制
二、硬件说明
三、编程实现
1、硬件相关宏定义
2、GPIO初始化
3、定义 PWM表
4、定时器 PWM配置
5、定时器中断服务函数
6、计算拟合周期
四、呼吸灯演示
1、PWM输出波形
2、呼吸灯
一、PWM脉冲宽度调制
1、使用脉冲占空比拟合不同波形的方式称为 PWM(脉冲宽度调制)控制技术——通过 对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。PWM 控制 的基本原理为:冲量相等而开头不同的窄脉冲加在具有惯性的环节上时,其效果基本 相同。其中冲量指窄脉冲的面积;效果相同指环节输出响应波形基本相同。 例如:可以用一系列等幅不用一系列等幅不等宽的脉冲来代替一个正弦半波,见图

要改变等效输出正弦波幅值,按同一比例改变各脉冲宽度即可。 若把拟合的波形改成呼吸特性曲线,即可得到控制呼吸灯使用的 PWM 波形,要生成 拟合的 PWM波形,通常使用计算法和调制法,本文中使用计算法:根据拟合波形的频率、幅值和半周期脉冲数,准确计算 PWM 波各脉冲宽度和
间隔,据此控制开关器件的通断,就可得到所需 PWM 波形。在下边编程实现中会详细说明。
2、要改变PWM输出波形的宽度,就要改变比较寄存器 CCRx 的值,想要输出不通宽度来拟合正弦波,则需要CCRx的值呈现如下图的变化趋势,即要生成一张CCRx的数值表,按周期变化将表中元素的值赋给CCRx。


二、硬件说明
本文所使用硬件为野火的stm32f103指南者开发板,LED使用PB5引脚控制的红色LED

三、编程实现
利用野火提供的呼吸灯例程说明
资料
提取码:i2u1

1、硬件相关宏定义
bsp_breathing.h 文件

定义了三组LED的宏,通过修改代码中的 #define LIGHT_COLOR RED_LIGHT语句,可以切换使用红、绿、蓝三种颜色的呼吸灯。 在每组宏定义中,定义了定时器编号、定时器时钟使能、红灯中PB5引脚重映射操作、GPIO 端口和引脚号、通道对应的比较寄存器名以及中断通道和中断服务函数名。 定时器的比较寄存器 CCRx 在控制呼吸灯的单个周期内需要切换为 PWM表中不同的数值,所以需要利用定时器中断。

2、GPIO初始化
bsp_breathing.c 文件

野火的库封装度比较高,所以使用的都是宏定义名,在上面的硬件配置中启用不同的宏,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值