定时器&PWM应用编程

一、STM32定时器

1、定时器介绍

定时器就是用来定时的机器,是存在于STM32单片机中的一个外设。其本质就是计数器,只不过 计数器 记录的是STM32的外部情况,所接收的也是外部脉冲,而 定时器 则是由STM32自身提供的一个非常稳定的计数器,这个稳定的计数器就是STM32上连接的晶振部件。

2、定时器分类

STM32F1 系列中,除了互联型的产品,共有 8 个定时器,分为 基本定时器,通用定时器 和 高级定时器 。

基本定时器:
TIM6 和 TIM7 是一个 16 位的只能向上计数的定时器,只能定时,没有外部 IO。
通用定时器:
TIM2 TIM3 TIM4 TIM5 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部 IO。
高级定时器:
TIM1 和 TIM8 是一个 16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有 8 个外部 IO。

二、PWM

1、PWM介绍

PWM,即脉冲宽度调制,是英文“Pulse Width ModulaTIon”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

2、PWM控制技术

PWM(Pulse Width ModulaTIon)控制技术就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等效的获得所需要的波形(含形状和幅值)。面积等效原理是PWM技术的重要基础理论。一种典型的PWM控制波形SPWM:脉冲的宽度按正弦规律变化。而和正弦波等效的PWM波形称为SPWM波。

脉宽调制(PWM,Pulse Width ModulaTIon)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。

(一)pwm控制技术特点

开关电源一般都采用脉冲宽度调制(PWM)技术,其特点是频率高、效率高、功率密度高、可靠性高。然而,由于其开关器件工作在高频通断状态,高频的快速瞬变过程本身就是一电磁骚扰(EMD)源,它产生的EMI信号有很宽的频率范围,又有一定的幅度。若把这种电源直接用于数字设备,则设备产生的EMI信号会变得更加强烈和复杂。

PWM的一个优点是从处理器到被控系统信号都是数字形式的,在进行数模转换。可将噪声影响降到最低。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。

(二)pwm控制技术优点

由于PWM可以同时实现变频变压反抑制谐波的特点。由此在交流传动及至其它能量变换系统中得到广泛应用。PWM控制技术大致可以分为三类:

1、正弦PWM(包括电压、电流或磁通的正弦为目标的各种PWM方案,多重PWM也应归于此类)。正弦PWM已为人们所熟知。旨在改善输出电压、电流波形、降低电源系统谐波的多重PWM技术在大功率变频器中有其独特的优势。

2、优化PWM优化PWM所追求的是实现电流谐波畸变率(THD)最小、电压利用率最高、效率最优,及转矩脉动最小以及其它特定优化目标。

3、随机PWM。

3、三、用定时器计数方式,控制LED以2s的频率周期性地亮-灭

打开STM32Cube,创建一个新项目,设置RCC
在这里插入图片描述
设置SYS
在这里插入图片描述
设置PA5端口
在这里插入图片描述
设置定时器
在这里插入图片描述
配置中断
在这里插入图片描述
修改时钟
在这里插入图片描述
创建项目
在这里插入图片描述
在这里插入图片描述
编写代码
(1)再main主函数立面添加定时器启动代码

HAL_TIM_Base_Start_IT(&htim2);   //打开定时器TIM2

(2)在mian函数中加入定时器回调中断函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
//这里灯亮一秒,灭一秒,则中断产生20次改变一次电平
	static uint32_t time_cnt =0;   //记录中断次数
	if(htim->Instance == TIM2)   
	{
		if(++time_cnt >= 20)   //判断是否已经达到一秒
		{
			time_cnt =0;       //点灯用的中断次数归零
			HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);    //改变LED所接引脚的电平
		}
	}
	
}

编译后,打开烧录程序
在这里插入图片描述
查看成果

定时器

四、采用定时器pwm模式,让 LED 以呼吸灯方式渐亮渐灭,周期为1~2秒

打开STM32Cube,创建一个新项目,设置RCC
在这里插入图片描述
设置SYS
在这里插入图片描述
配置TIM2
在这里插入图片描述
配置中断
在这里插入图片描述
设置USART
在这里插入图片描述
配置时钟,将 HCLK 设置为 72MHz
在这里插入图片描述
创建项目
在这里插入图片描述
在这里插入图片描述
打开项目后在main.c中定义一个变量来记录 pwm 波形的占空比

uint16_t pwm=10; 

主函数为

int main(void)
{
  HAL_Init();
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
  MX_GPIO_Init();
  MX_TIM2_Init();
  MX_USART1_UART_Init();

  MX_NVIC_Init();
  while (1)
  {
  while(pwm<500)
	  {
	   pwm = pwm + 10;
	   __HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,pwm);
	   HAL_Delay(20);//延时20毫秒
	  }
	  while(pwm>0)
	  {
	  pwm = pwm - 10;
	  __HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,pwm);
	  HAL_Delay(20);
	  }

  }
  /* USER CODE END 3 */
}

编译
在这里插入图片描述
查看波形
在这里插入图片描述
在这里插入图片描述
查看波形
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值