使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。

一、pwm简介

1、什么是pwm

PWM(Pulse Width Modulation)即脉冲宽度调制,简称脉宽调制。 它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术;它是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。

2、stm32上的pwm

STM32的定时器除了TIM6和7,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出。脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。通用定时器产生PWM 的定时器框图如下:
在这里插入图片描述

二、项目配置

1、创建项目

stm32CubeMX创建项目,选择芯片stm32f103c8t6。

2、配置环境

(1)、配置rcc

在这里插入图片描述

(2)、配置sys

在这里插入图片描述

(3)、配置TIM3

在这里插入图片描述

(4)、配置TIM4

在这里插入图片描述

(5)、配置时钟

在这里插入图片描述

3、生成项目

在这里插入图片描述
在这里插入图片描述

三、keil配置代码及运行

在main.c中添加以下代码

uint16_t pwm=0;   //占空比

在这里插入图片描述
打开pwm通道
在主函数中添加以下代码

	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); 
    HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1); 

在这里插入图片描述
在while循环中写入调用代码

while (pwm< 500)
	  {
		  pwm++;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwm);  
    __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_1, pwm);  			
		  HAL_Delay(1);
	  }
	  while (pwm)
	  {
		  pwm--;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwm);    
       __HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_1, pwm);  
			
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);

在这里插入图片描述
线路连接
LED灯短脚 —> A6
LED灯长脚 —> 3V3
PB6 —> PC13
在这里插入图片描述
在这里插入图片描述
运行结果

在这里插入图片描述

四、总结

使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值