STM32F107的通用定时器PWM实验总结

发布者:科技创客最新更新时间:2019-01-02 来源: eefocus关键字:STM32F107  通用定时器  PWM 手机看文章 扫描二维码
随时随地手机看文章

1.     STM32F107的通用定时器是指:  TIM2、TIM3、TIM4、TIM5、


2.     STM32F107的通用定时器(TIM2、TIM3、TIM4、TIM5)的模式有向上计数、向下计数、中央对齐模式。


向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。


向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。


中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。


3.     STM32F107的通用定时器的时钟选择有多种,一般使用RCC提供的内部时钟TIMxCLK,  由APB1时钟分频提供。


4.     状态标志位获取和清除


FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_tTIM_FLAG);


void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);


ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_tTIM_IT);


void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_tTIM_IT);


5.     PWM模式 :脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CRRx寄存器确定占空比的信号。


6.      可能要设置GPIO的复用或者重映射功能。void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_tTIM_OCPreload);


void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx,FunctionalState NewState)


7.     void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalStateNewState);


简单的说,ARPE=1,ARR立即生效。。。APRE=0,ARR下个比较周期生效。


8.     void TIM_OCxInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef*TIM_OCInitStruct);


 定时器输出函数初始化设置,主要有:


TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //PWM模式2


TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //比较输出使能


TIM_OCInitStructure. TIM_Pulse=100;


TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性:TIM输出比较极性高


TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3OC2


9.     设置比较函数voidTIM_SetCompareX(TIM_TypeDef* TIMx, uint16_t Compare2);




定时器PWM实现步骤:


1.       使能定时器3和相关IO口时钟。


 使能定时器3时钟:RCC_APB1PeriphClockCmd();


  使能GPIOB时钟:RCC_APB2PeriphClockCmd();


2.        初始化IO口为复用功能输出。函数:GPIO_Init();


 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      


3.     这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,


   所以需要开启AFIO时钟。同时设置重映射。


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);


  GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);


4.        初始化定时器:ARR,PSC等:TIM_TimeBaseInit();


5.       初始化输出比较参数:TIM_OC2Init();


6.       使能预装载寄存器: TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);


7.       使能定时器。TIM_Cmd();


8.      不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();


1)    TIM_TimeBaseStructure.TIM_ClockDivision这一行代码是干吗的啊


   CKD[1:0]: 时钟分频因子 (Clock division) 这2位定义在定时器时钟(CK_INT)频率、死区时间和由死区发生器与数字滤波器(ETR,TIx)所用的采样时钟之间的分频比例。 00: tDTS = tCK_INT01 : tDTS = 2 x tCK_INT10: tDTS = 4 x tCK_INT11 :保留,不要使用这个配置


用来屏蔽一些不需要的毛刺的。比如你数字滤波器的频率为1M,N=8,则频率大于1MHz/8=125KHz(持续时间小于8us)的脉冲都会被忽略。可以用在按键消抖之类的。


关键字:STM32F107  通用定时器  PWM 引用地址:STM32F107的通用定时器PWM实验总结

上一篇:stm32学习笔记(一)点亮LED
下一篇:关于STM32通用定时器更新事件中断

推荐阅读最新更新时间:2024-03-16 16:21

Proteus8.9 仿真STM32407ZGT6系列009_PWM多路可调占空比输出
一,打开文件(可以随文下载放置在文档中打开)。(如下图1所示) 图1 二,调整虚拟器件,另存工程文件。(如下图2,3,4所示) 图2 图3 图4 三,点击Source Code标签。(如下图5所示) 图5 四,编辑main.c,timer.c,timer.h, key.c,key.h, led.c,led.h 代码如Proteus8.9 仿真STM32407ZGT6系列001(如下图6所示) 图6 五,Main.c 代码: /* Main.c file generated by New Project wizard * Author: Ziegler Yin * Created: 周四 一月
[单片机]
Proteus8.9 仿真STM32407ZGT6系列009_<font color='red'>PWM</font>多路可调占空比输出
N76E003 PWM之极性控制
可能一些同学可能对PWM的极性控制不怎么理解(对,说的就是我自己。。。),那么就让我们在本次博文中,一起来探究下极性控制的原理及程序吧。如果有描述错误的情况,希望各位大佬指出。 首先我们来看看官方手册中对极性控制的描述,其中可以发现,对于PWM极性,是通过PNPn来进行控制的。 知道极性控制寄存器后,我们再来看看单片机内部的模块图,我们可以发现,PNPn寄存器,是对应通道二选一选择器的选择端,在默认情况下,PNPn为0,即正常输出,当PNPn寄存器置高时,PWM信号会被一个取反器控制。通俗一点来说,就是原先的占空比是控制高电平持续时间,现在通过这个取反器,使得占空比为低电平持续时间,之后变为高电平。 既然原理都明白了
[单片机]
N76E003 <font color='red'>PWM</font>之极性控制
SMT32的PWM波形输出配置总结
本文分享 STM32 之PWM波形输出配置总结。 一. TI MER分类: STM32中一共有11个 定时器 ,其中TIM6、TIM7是基本定时器;TIM2、TIM3、TIM4、TIM5是通用定时器;TIM1和TIM8是高级定时器,以及2个 看门狗 定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysT ic k。 其中TIM1和TIM8是能够产生3对PWM互补输出,常用于三相 电机 的驱动, 时钟 由APB2的输出产生。TIM2-TIM5是普通定时器,TIM6和TIM7是基本定时器,其时钟由APB1输出产生。 二、PWM波形产生的原理: 通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM
[单片机]
SMT32的<font color='red'>PWM</font>波形输出配置总结
STM32通过PWM控制电机速度
做STM32智能小车的实验中会用到定时器PWM输出,来改变直流电机的转速。分享本文了解如何通过PWM实现对电机速度的控制。 PWM控制电机速度的基本原理 PWM(Pulse Width Modulation),也就是脉冲宽度调制。 PWM中有一个比较重要的概念,占空比:是一个脉冲周期内有效电平在整个周期所占的比例。 为了实现IO口上电压的持续性变化,可以调节PWM的占空比。这也能够使外设的功率进行持续性变化,最终控制直流电机转速的快慢。如何调节PWM波形的输出就是重点。 上图中的ARR是我们给定时器的一个预装载值,CCRx的上下变化是产生PWM波的关键。我们假设ARR大于CCRx的部分输出为高电平(即t1-t2、t3-t4、
[单片机]
STM32通过<font color='red'>PWM</font>控制电机速度
高耐压PWM三端开关电源
  最简单的5V/5W开关电源实际电路如图所示。图中TOP210(IC1)为三端PWM开关。IC1中含有PWM控制器,功率MOSFET和各种保护电路。这种5V/5W开关电源的成本比常用的线性电源成本低。   该电源交流输入电压范围为85~265V,当负载从额定负载的10%变化到100%,电源电压调整率和负载电流调整率可达+-5%。该电源还具有过压、超温保护和限流等功能。   TOP210的D脚为内部输出MOSFET的漏极,C脚为内部误差放大器和反馈电流输入脚,用来调整开关电源的占空比。S脚为内部MOSFET的源极,也是内部控制电路的公共端。   交流输入电压经VD1-VD4整流后的直流高压,
[电源管理]
STM32学习笔记5:通用定时器PWM输出
1. TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文 Pulse Width Modulation 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。 STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 1.1PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的( 110 为模式1, 111 为模式2)。模式
[单片机]
基于PWM技术蓄电池充放电与检测系统设计
    电力机车用蓄电池承担着机车升弓前为辅助系统供电的任务,蓄电池的质量显得至关重要。目前电力机车用蓄电池充放电装置大多使用传统的相控整流充电技术,虽然技术成熟、价格低廉,但调节周期长、动态响应慢、功率因数低,谐波污染也比较大,易造成对电网的污染。为保证质量,电力机车用蓄电池在出厂前需要进行老化试验。目前的出厂测试老化试验大多使用水泥电阻等能耗型负载充当被试电源产品的负载。能耗型负载虽然成本低廉,但能量被白白消耗掉,会造成电能的大量浪费。     本文研究了一种基于PWM逆变整流的新型蓄电池充放电装置,能耗低,功率因数大,能实现恒流或恒压充放电以及实现负载大小灵活调节,并能将试验过程中的能量反馈回电网,实现了能源的再利用。 1 蓄
[电源管理]
基于<font color='red'>PWM</font>技术蓄电池充放电与检测系统设计
详解智能充电器PWM占空比设置
  在日常的电源设计中,大多数工程师会把脉冲宽度调制习惯的称之为PWM。了解PWM占空比之前需要先了解什么叫PWM,PWM就是其脉冲宽度在一个周期内输出高电平的时间,比如周期T=64US,脉冲宽度D=32us,则占空比为D/T=32/64=50% ,脉冲宽度调整就是占空比的调整。   PWM占空比的设置在工作环节中是很重要的一节,那么对在开发智能充电器时各充电阶段的PWM占空比如何设置?其实,在通常情况下,占空比都不是固定的,需要自动调整。比如利用单片机做恒流充电器,可以通过检测主电流线上的检测电阻(一般是大功率小电阻值的)上的电压降来判断电流的大小是否超过预定的值,超过的话程序控制PWM占空比减少,低于预定值相反,如此不断循环.
[电源管理]
详解智能充电器<font color='red'>PWM</font>占空比设置
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved