STM32——使用PWM波完成呼吸灯


实验环境

软件:
STM32CubeMX
KEIL5
mcuisp
串口通信助手
硬件:
STM32F103C8Tx
杜邦线,面包板,USB转TTL


一、PWM工作原理

1.基本特性

脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。广泛应用于电机控制、灯光的亮度调节、功率控制等领域。
在这里插入图片描述

2.PWM两个基本参数

周期(Period): 一个完整PWM波形所持续的时间
占空比(Duty): 高电平持续时间(Ton)与周期时间(Period)的比值
占空比计算公式: Duty = ( Ton / Period ) x 100%

3.PWM信号电压调节原理

在这里插入图片描述

4.PWM输出工作原理

功能单元功能
输入捕获单元用于捕获外部触发信号,捕获方式为上升沿/下降沿/双边沿捕获。发生捕获事件时,将此刻计数器的值锁存到捕获/比较寄存器中,供用户读取,同时可以产生捕获中断。
捕获/比较寄存器TIMx_CCR寄存器在输入捕获模式下用于存放发生捕获事件时的当前计数值;在输出比较模式下用于存放预设的比较值。该寄存器具备预装载功能。
输出比较单元用于信号输出。定时器通过将预设的比较值与计数器的值做匹配比较,以实现各类输出,如PWM输出、单脉冲输出等。预设的比较值存放在捕获/比较寄存器中。

二、HAL库配置

1.TIM3、4通道引脚分布

在这里插入图片描述

2.TIM配置

(1)配置定时器3。如图,位置1选中定时器3;位置2选择时钟源为“Internal Clock”,通道2选择“PWM Generation CH2”
在这里插入图片描述

位置3设置分频系数为71,计数周期为500,其它默认。
位置4设置占空比初始值为10,其实这里不写也没影响。

(2)TIM4同理配置,如图
在这里插入图片描述

3.时钟RCC配置

(1)打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。
在这里插入图片描述
(2)系统时钟选择HSE,PLL锁相环倍频9倍,系统时钟来源选择为PLL,置APB1分频器为 /2
在这里插入图片描述

4.项目配置

(1)选择项目名称,选择IDE为MDK-ARM
在这里插入图片描述
(2)选择复制所有库文件到项目当中
在这里插入图片描述

三、项目代码修改

1.修改工程。打开工程,主要修改main.c文件。定义一个变量,用来存储占空比:

在这里插入图片描述

代码:

uint16_t duty_num = 10;	//占空比
int flag = 0;	//逐亮或逐暗标志

2.开始TIM2的通道3,4,输出PWM。
在这里插入图片描述

代码:

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);	//打开tim3的通道2
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2);	//打开tim4的通道2

3.编写PWM波形生成函数
每隔50毫秒,占空比加10,如果超过500(也就是PWM周期),将标志flag置1,减少占空比,如果小于10,将标志flag置0,增加占空比

void TIM34_PWM()
{
	  HAL_Delay(30);	//延时30ms
		if(flag==0)
		{
			duty_num = duty_num + 10;	//当flag=2时将占空比增加10
		}
		if(flag==1)
		{
			duty_num = duty_num - 10;	//当flag=1时将占空比减少10
		}
		
		if(duty_num > 500)
		{
			flag=1;	//将标志转为逐暗
		}
		if(duty_num < 10)
		{
			flag=0;	//将标志转为逐亮
		}
		__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_2,duty_num);	//配置PWM波形
		__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_2,duty_num);
		
  }

4.修改while循环中的代码

 while (1)
  {
		
		TIM34_PWM();//调用PWM波生成函数
  }

修改后,保存,编译、下载,重新上电。可以看到外设LED以及最小开发板自带的LED,从亮倒暗,逐渐变化。

四、STM32F103C8开发板接线

根据设计的程序连接电路:
对于USB转TTL模块和stm32f103c8t6连接:
GND — GND
3v3 — 3v3
TXD — A10
RXD — A9

总电路:
红——A7
B7——C13

五、程序运行结果

程序烧录运行后,查看外设LED灯以及最小开发板自带LED的状态
在这里插入图片描述
这样通过PWM制作的呼吸灯就完成了

六、总结

PWM(脉冲宽度调制)控制技术——通过 对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。根据拟合波形的频率、幅值和半周期脉冲数,准确计算 PWM 波各脉冲宽度和间隔,据此控制开关器件的通断,就可得到所需 PWM 波形,再将PWM波形通过引脚输出,就可以实现呼吸灯,通过这种思想也可以用来控制电机转速。

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值