STM32通用定时器的PWM

发布者:张延强最新更新时间:2016-05-25 来源: eefocus关键字:STM32  通用定时器  PWM 手机看文章 扫描二维码
随时随地手机看文章
脉冲宽度调制(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中填入适当的数来输出自己所需的频率和占空比的方波信号。

 

	//初始化TIM3
	TIM_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脉冲宽度调制模式2
 	TIM_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时高电平。
关键字:STM32  通用定时器  PWM 引用地址:STM32通用定时器的PWM

上一篇:stm32通用定时器中断问题
下一篇:STM32通用定时器TIM25基本用法

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

STM32开发笔记39: Keil打开时提示”Warning #440“警告的解决方法
单片机型号:STM32F070F6P6 首先指明的是此问题是升级keil以后造成的,keil版本升级到V5.26.2.0后,打开原先的程序提示”Warning #440“警告,如下图所示。 此问题的解决方法,在Keil的官方网站中,有详细的描述,网址如下:http://www.keil.com/support/docs/4028.htm。 具体解决的方法,就是打开”Options for Target“对话框,找到”Device“选项页,选择其它芯片类型,然后再选回来,点击”OK“按钮,就解决了。
[单片机]
<font color='red'>STM32</font>开发笔记39: Keil打开时提示”Warning #440“警告的解决方法
浅析STM32 Bootloader设计
  设计思想   由Bootloader负责检测SD卡中是否有固件更新所需的BIN文件。如果检测到所需要的BIN文件,则开始复制文件更新固件。更新结束后跳转到指定的地址开始执行最新的程序。可以在论坛的ARM版块找到liklon的帖子:两份简单的 Bootloader 程序。链接为: http://forum.eepw.com.cn/thread/238997/1 帖子里已经共享了两份简单的 STM32 Bootloader程序,一份是利用znFAT进行SD卡上文件操作,第二份是利用FATFS进行文件操作。   知识要点    STM32 内部FLASH的起始地址为0X08000000,Bootloader程序文件就从此地址开始写入
[单片机]
浅析<font color='red'>STM32</font> Bootloader设计
意法完成STM32微控制器底层软件部署
意法半导体(ST)完成了将其免费底层应用程序编程接口(Low-Layer Application Programming Interface, LL API)软件,导入支持所有的STM32微控制器(MCU)的STM32Cube软件包中。LL API软件让专业的开发人员,能够在方便好用的STMCube环境内开发应用,使用ST验证的软件,对最低到寄存器级的代码进行优化,从而缩短产品上市时间。 在所有的STM32Cube组合内,整合LL API和硬件抽象层(Hardware Abstraction Layer, HAL)软件,让开发人员能够完全自由地选择外部周边的控制方式。他们可以选择利用HAL的易用性和转移性,或采用LL API软件优
[半导体设计/制造]
STM32中FSMC与硬件I2C冲突
ST官网勘误表中列到,FSMC与I2C不能同时开启。解决的办法可以有 1:将I2C映射到PB9,PB8. 2:使用模拟的I2C. I/O重映射步骤:(以串口为例) 1.打开重映射时钟和USART重映射后的I/O口引脚时钟, RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RC C_APB2Periph_AFIO,ENABLE); 2.I/O口重映射开启. GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE); 3.配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置.(映射的引脚是固定的,查手册可得) GPIO_InitStruct
[单片机]
基于Atmega48太阳能路灯控制器研究
作为一种新兴的绿色能源,太阳能具有取之不尽、用之不竭、清洁安全的特点,是理想的可再生能源。而太阳能光伏发电技术作为太阳能利用的一个重要组成部分,被认为是目前最具发展潜力的一种发电技术。太阳能光伏发电系统的研究对于缓解能源危机,减少环境污染和温室效应具有重要的意义。 太阳能路灯就是典型的太阳能光伏发电应用产品之一,它是以太阳能作为电能供给,用来提供夜间道路照明。因为不需要消耗电网电能、不需要架设输电线路或挖沟铺设电缆,不污染环境、安全可靠,因而在公共照明及亮化装饰领域有着广阔的前景。 1 太阳能路灯系统的结构 太阳能路灯系统由太阳能电池组件、太阳能控制器、蓄电池组、灯具等部分组成。若需输出电源为交流220 V或110
[单片机]
基于Atmega48太阳能路灯控制器研究
stm32 独立看门狗时钟配置
独立看门狗的时钟源为40k,分频因子最大为256 //初始化独立看门狗 5秒钟 //prer:分频数:0~7(只有低3位有效!) //分频因子=4*2^prer.但最大值只能是256! //rlr:重装载寄存器值:低12位有效,最大只能是4096 //时间计算(大概):Tout=40K/((4*2^prer)*rlr)值. void IWDG_Init(u8 prer,u16 rlr) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* Register write functions allow dogs*/ IWDG_SetPrescaler(IWDG_Prescaler_25
[单片机]
STM32单片机UART发送配置的步骤及方法
字符发送的过程描述:在UART的发送过程中先将数据输入到发送数据寄存器中(TDR)此时(TXE)被硬件置1,之后TDR寄存器将数据串行移入到发送移位寄存器中,将数据在TX端口发送,此时(TC)被硬件置1。发送与接收是逆过程。 UART发送配置步骤: 1.通过USART_CR1寄存器上置位UE来激活USART。 2.编程USART_CR1的M位来定义字长。 3.在USART_CR2中编程停止位的位数。 4.如果采用多缓冲器通信,配置USART_CR3中的DMA使能位(DMAT)。按多缓冲器通信中的描述配置DMA寄存器。 5.利用USART_BRR寄存器选择要求的波特率。 6. 设置USART_CR1中的TE位,发送一个空闲帧作为
[单片机]
<font color='red'>STM32</font>单片机UART发送配置的步骤及方法
降压型PWM控制器APl510原理及应用
 引言   随着信息技术与集成电路的高速发展,电子产品逐渐向智能化、小型化、低功耗方面发展,同时电源必须做到小体积、高效率、低功耗,以适应电子产品的高速发展。因此,高度集成的PWM控制器在电子产品中得到了广泛应用。   易亨(AnachiD)电子公司推出的降压型PWM控制器APl510可以广泛应用于电子产品的电源中。由于APl510芯片内包含基准电压源、振荡电路、误差放大器、内部PMOS开关管等电路,所以只须外加电感、电容、二极管等少量元器件,便可组成小体积、高效率的降压型开关稳压电源。   l APl5lO的工作原理   APl510的原理框图如图l所示。      1.1 引脚功能及描述   脚1 (FB
[工业控制]
降压型<font color='red'>PWM</font>控制器APl510原理及应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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