您的位置:首页 > 财经 > 金融 > 安徽安庆疫情最新消息_三视觉设计网站_海外网站建站_郑州疫情最新情况

安徽安庆疫情最新消息_三视觉设计网站_海外网站建站_郑州疫情最新情况

2024/11/17 22:26:12 来源:https://blog.csdn.net/qq_58662017/article/details/143322405  浏览:    关键词:安徽安庆疫情最新消息_三视觉设计网站_海外网站建站_郑州疫情最新情况
安徽安庆疫情最新消息_三视觉设计网站_海外网站建站_郑州疫情最新情况

输出比较功能是驱动电机的必要条件,输出比较共有三个实验,3 4 5 三个主题讲解,如何感兴趣的同学对电机感兴趣,可以认真学一下TIM的输出比较功能(其实输出比较就是输出一个PWM波形的)
简单介绍一下PWM----Whappy
PWM原理 PWM频率与占空比详解-CSDN博客

伺服电机基本概念解析:伺服系统组成及其控制原理_伺服系统设计原理-CSDN博客

3. STM32之定时器,输出比较,pwm控制led呼吸灯。

PWM控制电机的原理

PWM电机控制原理是通过调节PWM信号的占空比来控制电机的转速和方向的一种电机控制方式.。PWM是脉冲宽度调制的缩写,通过改变脉冲的宽度和周期来调节电压的平均值,从而控制电机的输出功率。在电机控制系统中,控制器产生PWM信号,经过功率放大器放大后,驱动电机转动。通过调整PWM信号的占空比,可以实现电机转速的控制,同时也可以改变电机的转向。PWM电机控制原理广泛应用于各种类型的电机控制系统中,如直流电机控制、步进电机控制、交流电机控制等。步进电机驱动器细分原理_步进驱动器细分设置表说明_步进电机细分-CSDN博客

脉冲数=电机移动距离,

脉冲频率=电机速度




上图说明:当作为输入时,可作为输入捕获,输出时,可以作为输出比较(基本功能是输出PWM)。CCR输入捕获和输出捕获寄存器,

定时器的输出比较是怎样生成PWM波形的?



CNT>=CCR1时:--->给输出模式控制器传递一个信号,然后通过参考信号OC1ref,最后通过极性选择,选择相关的高低电平通过输出使能电路通过OC1输出相对应的PWM波形,下表为控制ref输出控制表



通过上表,我们就可以知道STM32的定时器输出pwm波形可以通过配置输出和捕获中的输出模式控制器中的相关寄存器(OC1M[2:0])来进行精确的控制。

(第一个实验)本实验着重使用PWM模式1来输出可调的PWM波形,参考下图


配置PWM波形步骤

配置时基单元-->CCR(捕获比较寄存器自己设定的)-->输出模式配置-->极性选择-->输出使能

代码:配置步骤:配置时钟-->配置时基单元-->配置输入输出捕获CCR-->配置输出模式-->极性选择--GPIO输出

注:PWM和GPIO对应关系是怎样的?

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "PWM.h"int main(void)
{OLED_Init();PWM_Init();uint16_t Compare;while (1){for(Compare=0; Compare<100; Compare++){PWM_SetComparel(Compare);Delay_ms(10);}for(Compare=0; Compare<100; Compare++){PWM_SetComparel(100-Compare);Delay_ms(10);}}
}
#include "stm32f10x.h"                  // Device header/************************************************配置步骤:配置时钟-->配置时基单元(并初始化OC)-->配置输入输出捕获CCR-->配置输出模式-->极性选择--GPIO输出PWM频率:	Freq = CK_PSC / (PSC + 1) / (ARR + 1)
PWM占空比:	Duty = CCR / (ARR + 1)
PWM分辨率:	Reso = 1 / (ARR + 1)实验目标:
输出一个PWM频率 = 1kHz,占空比 = 50%,分辨率 = 1%的PWM波形************************************************/void PWM_Init(void)
{//配置时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);TIM_InternalClockConfig(TIM2);//打开内部时钟//配置时基单元TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 100 - 1; //ARR 时基单元中的自动重装值 ARR+1=100-->ARR= 100-1/********************************************************ARR时基单元中的自动重装值    公式:计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)= CK_PSC / (PSC + 1) / (ARR + 1)计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)*********************************************************/TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;  //PSC 时基单元中的预分频 PSC + 1 =720-->PSC =720-1TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化输出比较单元OCTIM_OCInitTypeDef TIM_OCInitstructure;TIM_OCInitstructure.TIM_OCMode = TIM_OCMode_PWM1;                      //输出模式TIM_OCInitstructure.TIM_OCPolarity = TIM_OCPolarity_High;               //输出极性TIM_OCInitstructure.TIM_OutputState =  TIM_OutputState_Enable; 			 //输出使能TIM_OCInitstructure.TIM_Pulse =   0;             		 //配置CCR寄存器(通过公式)TIM_OC1Init(TIM2,&TIM_OCInitstructure);TIM_Cmd(TIM2, ENABLE);//启动定时器
}void PWM_SetComparel(uint16_t Compare)
{TIM_SetCompare1(TIM2,Compare);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com