PWM介绍

输出比较简介

  1. OC(output Compare )输出比较
  2. 输出比较可以通过比较CNT和CCR寄存器(捕获\比较就寄存器)值的关系,进行置1,置0或翻转操作,用于输出一定频率和占空比的PWM波形。
    在这里插入图片描述
  3. 每个高级定时器和通用定时器都拥有4个输出比较通道
  4. 高级定时器的前3个通道额外拥有死区生成和互补输出的功能。

PWM(Pulse Width Modulation)脉冲宽度调制
在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电极控诉等领域

PWM参数

在这里插入图片描述

PWM基本结构

在这里插入图片描述

参数计算

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

高级比较通道(高级)

在这里插入图片描述

舵机简介

舵机是一种根据输入PWM信号占空比来控制输出角度的装置
输入PWM信号要求:周期为20ms,高电平。
在这里插入图片描述
由有原理图:可以看出把PWM当做一个通讯协议,也是一个常见的应用。
在这里插入图片描述
在这里插入图片描述

注意如果单独供电,负极要和stm32共地

直流电极及驱动简介

  1. 直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接,电机正转,当电极反接时,电机反转。
  2. 直流电机输入大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作
  3. TB6612是一款双路H桥的直流电极驱动芯片,可以驱动两个直流电极并控制其转速和方向
    在这里插入图片描述

硬件电路

在这里插入图片描述

在PWM驱动LED呼吸灯

在这里插入图片描述

GPIO的模式为 复用推挽输出。 原因: 如图使用推挽输出,是读取输出数据寄存器来给GPIO 信号的. 现在我们是使用定时器驱动led灯,所以应该使用复用推挽输出。

### STM32 PWM功能介绍 PWM (Pulse Width Modulation, 脉冲宽度调制) 是一种用于控制功率传输的技术,在STM32微控制器中得到了广泛应用。通过改变脉冲信号的占空比来调节输出电压的有效值,从而实现对电机速度、LED亮度等多种应用场合下的精确控制[^1]。 STM32内部集成了多个定时器模块,这些定时器可以配置成PWM模式工作。每个定时器都具有独立的通道,能够同时产生多路PWM波形输出。此外,还支持多种高级特性如死区时间插入、互补输出等,适用于逆变电源、伺服控制系统等领域[^2]。 ### 使用方法概述 为了使能并配置STM32上的PWM功能,通常需要经过以下几个方面设置: #### 初始化硬件资源 - 配置GPIO引脚为复用推挽输出模式; - 选择合适的APBx时钟源及时钟分频系数; #### 定义TIMx参数 - 设置自动重装载寄存器ARR(Auto Reload Register),决定周期长度; - 设定捕获/比较寄存器CCR(Capture/Compare Register),定义高电平持续的时间比例即占空比; #### 启动PWM输出 - 开启相应定时器中断或者DMA请求(可选); - 执行启动命令让定时器开始计数进而触发PWM波形生成; 下面是一个简单的初始化代码片段展示如何开启一个基本的PWM输出: ```c // 假设使用 TIM2 CH1 PA0 输出PWM 波形 void MX_TIM2_Init(void) { __HAL_RCC_TIM2_CLK_ENABLE(); // 使能TIM2外设时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; /* 配置PA0作为TIM2_CH1 */ __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); TIM_OC_InitTypeDef sConfigOC ={0}; htim2.Instance=TIM2; htim2.Init.Prescaler=8399;//预分频值设定 htim2.Init.CounterMode=TIM_COUNTERMODE_UP; htim2.Init.Period=999 ;// 自动重载值设定 htim2.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1; if(HAL_TIM_PWM_Init(&htim2)!=HAL_OK){ Error_Handler(); } sConfigOC.OCMode=TIM_OCMODE_PWM1; sConfigOC.Pulse=499; // 占空比50% sConfigOC.OCPolarity=TIM_OCPOLARITY_HIGH; if(HAL_TIM_PWM_ConfigChannel(&htim2,&sConfigOC,TIM_CHANNEL_1)!=HAL_OK){ Error_Handler(); } } ``` 上述程序实现了在PA0上输出频率约为1kHz、占空比为50% 的方波信号[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值