STM32实战-高级定时器带死区的互补PWM输出

这篇具有很好参考价值的文章主要介绍了STM32实战-高级定时器带死区的互补PWM输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:

平时我们设计点击驱动电路时,一般会采用npn和pnp三极管,来控制电机的导通和关闭,但是三级管内部自带电容,断电后不会立马断掉,会经过很小的一段时间才会放电完毕,这时候要留有死区给电容放电,这就有了互补pwm波。

  同时,当电机出现故障,如果利用软件控制信号输出响应断电的话会有时间上的延时,相应的也就出现的刹车的概念,利用硬件电路直接断电,减少时间延时。如下图所示:

STM32实战-高级定时器带死区的互补PWM输出

程序主要实现的功能如下:

1、上电后,输出带死区的互补PWM;

2、触摸按键1调节PWM占空比;

3、刹车引脚高电平触发。

最终在示波器上的波形如下图所示:

STM32实战-高级定时器带死区的互补PWM输出


目录

1.硬件电路 

 2.技术讲解

2.1高级定时器

2.2框图 

2.2.1重复计数

2.2.2死区 

2.2.3刹车 

3.软件编程 

 3.1HAL库函数

 3.2cubemax初始化

3.3编程函数 

3.3.1初始化函数

 3.3.2回调函数



1.硬件电路 

STM32实战-高级定时器带死区的互补PWM输出

 2.技术讲解

2.1高级定时器

高级控制定时器(TIM1)由一个 16 位的自动装载计数器组成,它由一个可编程预分
频器驱动。
它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形
(输出比较, PWM,嵌入死区时间的互补 PWM 等)。
使用定时器预分频器和 RCC 时钟控制预分频器,可以实现脉冲宽度和波形周期
从几个微秒到几个毫秒的调节。

高级控制(TIM1)和通用(TIMx)定时器是完全独立的,它们不共享任何资源。它们
可以同步操作。

主要特性:

TIM1 定时器的功能包括:
● 16 位上,下,上/下自动装载计数器
● 16 位可编程预分频器,计数器时钟频率的分频系数为 1~65535 之间的任意数值
● 4 个独立通道:
- 输入捕获
- 输出比较
- PWM 生成(边缘或中间对齐模式)
- 单脉冲模式输出
- 死区时间可编程的互补输出
● 使用外部信号控制定时器和定时器互连的同步电路
● 在指定数目的计数器周期之后更新定时器寄存器
刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态
● 如下事件发生时产生中断/DMA:
- 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
- 触发事件(计数器启动,停止,初始化或者由内部/外部触发计数)
 

2.2框图 

STM32实战-高级定时器带死区的互补PWM输出 

2.2.1重复计数

之前我们在设置自动重装载之后,定时器会在设置的时间进入中断,高级定时器新增了重复次数计数器,设置重复次数,每到达设置时间计数一次,当满足计数阈值,就会响应中断。

STM32实战-高级定时器带死区的互补PWM输出

2.2.2死区 

死区 为了给三极管电容放电的时间,我们可以通过软件控制pwm波形上升沿,或者下降沿的响应时间,一般设置在几微妙,需要通过示波器调节。调整前后图形一般如下所示:

STM32实战-高级定时器带死区的互补PWM输出

2.2.3刹车 

高级定时器带有刹车检测功能,相比软件检测,硬件强制停止,对实时性要求更高,图解如下图所示:

STM32实战-高级定时器带死区的互补PWM输出 

3.软件编程 

 3.1HAL库函数

  本次我们新增的库函数是互补pwm波的输出,具体函数如下:

STM32实战-高级定时器带死区的互补PWM输出 

STM32实战-高级定时器带死区的互补PWM输出 

 3.2cubemax初始化

 STM32实战-高级定时器带死区的互补PWM输出

3.3编程函数 

 整体框架都一样,只是回调函数中修改为互补pwm波形输出,只要有按键按下,响应中断,进入回调函数,初始化函数部分上电启动pwm互补函数库。具体代码如下:

3.3.1初始化函数

static void Peripheral_Set()
{
	Timer6.Timer6_Start_IT(); //启动定时器6
	
	//启动定时器1pwm互补输出
	HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
	HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);
}

 3.3.2回调函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == KEY1_Pin)
	{
		LED.LED_Flip(LED2);
		
		/***
		调整pwm占空比,用于测试重复计数器功能,
		***/
		if(TIM1->CCR1 == 50)
		{
			TIM1->CCR1 = 80; //调整占空比80%
		}
		else
		{
			TIM1->CCR1 = 50; //调整占空比为50%
		}
	}
}

 文章来源地址https://www.toymoban.com/news/detail-481260.html

到了这里,关于STM32实战-高级定时器带死区的互补PWM输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32使用高级定时器输出互补pwm波

    最近做的一个项目用到stm32,网上查了很多资料,也踩了很多坑,这里记录一下配置的步骤和说明 硬件使用的是stm32h750vbt6; 软件用到了stm32cubemx和keil5; 打开Debug模式方便调试,可以忽略,不影响代码运行 在用cube配置时钟源时,有下面三个选项 Disable(禁用) BYPASS Clock Sou

    2024年02月16日
    浏览(74)
  • 兆易GD32E508的SHRTIM配置 主从定时器 产生2对相位可调互补PWM 带死区

    GD32E50X的SHRTIM与STM32的HRTIM工作原理高度相似,但是兆易官方只有从定时器发波的例子(批评),这里教大家使用主定时器来改变从定时器的起始相位的方式产生移相互补PWM(库函数配置方式)。 SHRTIM 高分辨率时钟,在180MHz主频基础上64倍频,可以获得最高11.52GHz频率的PWM,用

    2024年02月11日
    浏览(56)
  • GD32F303高级定时器输出互补PWM-开发笔记

    ◼ 总通道数:4; ◼ 计数器宽度:16位; ◼ 时钟源可选:内部时钟,内部触发,外部输入,外部触发; ◼ 多种计数模式:向上计数,向下计数和中央计数; ◼ 正交编码器接口:被用来追踪运动和分辨旋转方向和位置; ◼ 霍尔传感器接口:用来做三相电机控制; ◼ 可编程

    2024年02月09日
    浏览(62)
  • STM32——高级定时器输出指定个数PWM波原理及实战

    相比于通用定时器特性: 1)重复计数器 2)死区时间带可编程的互补输出 3)断路输入,用于将定时器的输出信号置于用户可选的安全配置中 1,配置定时器基础工作参数 HAL_TIM_PWM_Init() 2,定时器PWM输出MSP初始化 HAL_TIM_PWM_MspInit() 配置NVIC、CLOCK、GPIO等 3,配置PWM模式/比较值等

    2024年01月16日
    浏览(60)
  • 高级定时器实例-PWM互补输出与刹车功能

    仅以此篇文章梳理我编写该实例的过程 我手中的正点原子STM32MINI板所用的主控型号为STM32F103C8T6,因此高级定时器只有TIM1和TIM8,本章我所使用的资源为TIM1的CH1,CH1N,BKIN,通过这些资源实现PWM的互补输出以及刹车功能 在使用TIM1的CH1,CH1N和BKIN前,让我们先来看下,这些引脚

    2024年01月18日
    浏览(47)
  • STM32 MCU 定时器详解(3)--高级定时器

    16位递增、递减、中心对齐计数器(计数值:0~65535) 16位预分频器(分频系数:1~65536) 可用于触发DAC、ADC 在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请求 4个独立通道,可用于:输入捕获、输出比较、输出PWM、单脉冲模式 使用外部信号控制定时器且可实

    2024年04月17日
    浏览(49)
  • STM32高级定时器详解

    ✅作者简介:嵌入式入坑者,与大家一起加油,希望文章能够帮助各位!!!! 📃个人主页:@rivencode的个人主页 🔥系列专栏:玩转STM32 💬保持学习、保持热爱、认真分享、一起进步!! 基本定时器TIM6和TIM7各包含 一个16位自动装载计数器 ,由各自的可编程预分频器驱动。

    2024年01月19日
    浏览(51)
  • STM32中TIM定时器定时功能详解(适用基本,通用,高级定时器)

    定时器有高级定时器、通用定时器、基本定时器三种类型。具体功能如下。 上面是每种定时器所具有的功能。 我们可以看到每种定时器都有一个定时功能,(可能是名字的由来吧)。当然,每个定时器都可以来使用定时功能,但是我们往往在基本定时器和通用定时器上面使用

    2024年01月19日
    浏览(63)
  • STM32TIM定时器PWM输出比较(适用于通用,高级定时器)

    在定时器中我们最常用的功能就是输出PWM,大多是用在电机控制方面,目前网络上相关资料也有很多,但是,很多不利于我们“现搜现用”我这里不是说我写的有多好,而是你搜索到此类文章时大部分是急于解决目前的问题,一段相关代码和讲解就行,当然不是学习背后的原

    2024年01月25日
    浏览(58)
  • STM32——高级定时器输出比较模式实验

    1,配置定时器基础工作参数 HAL_TIM_OC_Init() 2,定时器PWM输出MSP初始化 HAL_TIM_OC_MspInit() 配置NVIC、CLOCK、GPIO等 3,配置PWM模式/比较值等 HAL_TIM_OC_ConfigChannel() 4,使能通道预装载 __HAL_TIM_ENABLE_OCxPRELOAD() 5,使能输出、主输出、计数器 HAL_TIM_OC_Start() 6,修改捕获/比较寄存器的值 _HAL

    2024年02月02日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包