您的位置 首页 FPGA

STM32通用定时器的PWM

脉冲宽度调制(PWM),是英文PulseWidthModulation的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效…

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是使用微处理器的数字输出来对模仿电路进行操控的一种十分有用的技能。简略一点,便是对脉冲宽度的操控。一般用来操控步进电机的速度等等。STM32的定时器除了TIM6和TIM7之外,其他的定时器都能够用来发生PWM输出,其间府第定时器TIM1和TIM8能够一起发生7路的PWM输出,而通用定时器也能一起发生4路的PWM输出。

PWM输出形式

STM32的PWM输出有两种形式,形式1和形式2,由TIMx_CCMRx寄存器中的OCxM位确认的(“110”为形式1,“111”为形式2)。形式1和形式2的差异如下:

110:PWM形式1-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有用电平(OC1REF=1)。

111:PWM形式2-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有用电平,否则为无效电平。

由此看来,形式1和形式2正好互补,互为相反,所以在运用起来不同也并不太大。

而从计数模式上来看,PWM也和TIMx在作定时器时相同,也有向上计数形式、向下计数形式和中心对齐形式,关于3种形式的详细材料,能够检查《STM32参考手册》的“14.3.9 PWM形式”一节,在此就不详细赘述了。

PWM的输出管脚是确认好的,详细的引脚功用能够检查《STM32参考手册》的“8.3.7定时器复用功用重映射”一节。在此需求着重的是,不同的TIMx有分配不同的引脚,可是考虑到管脚复用功用,STM32提出了一个重映像的概念,便是说经过设置某一些相关的寄存器,来使得在其他非原始指定的管脚上也能输出PWM。可是这些重映像的管脚也是由参考手册给出的。比如说TIM3的第2个通道,在没有重映像的时分,指定的管脚是PA.7,假如设置部分重映像之后,TIM3_CH2的输出就被映射到PB.5上了,假如设置了彻底重映像的话,TIM3_CH2的输出就被映射到PC.7上了。

PWM输出的是一个方波信号,信号的频率是由TIMx的时钟频率和TIMx_ARR预分频器所决议的。而输出信号的占空比则是由TIMx_CRRx寄存器确认的。其公式为“占空比=(TIMx_CRRx/TIMx_ARR)*100%”,因而,能够经过向CRR中填入恰当的数来输出自己所需的频率和占空比的方波信号。

//初始化TIM3TIM_TimeBaseStructure.TIM_Period = arr; //设置鄙人一个更新事情装入活动的主动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟切割:TDTS = Tck_tim  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数形式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //依据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时刻基数单位//初始化TIM3 Channel1 PWM形式	TIM_OCInitStructure.TIM_Pulse = 0x7FF;	//设置占空比-能够初始化是设置也能够后边调用函数设置TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //挑选定时器形式:TIM脉冲宽度调制形式2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低TIM_OC1Init(TIM3, &TIM_OCInitStructure);  //依据T指定的参数初始化外设TIM3 OC1

此处的TIM_TimeBaseStructure.TIM_Period = arr;设置TIMx_ARR,TIM_OCInitStructure.TIM_Pulse = 0x7FF;设置TIMx_CRRx。实践的波形由CNT和CRR比较,CNT自增从0~arr,到arr后复位为0.当cntarr时高电平。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/265831.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部