×
单片机 > 单片机程序设计 > 详情

利用STM32的定时器输出PWM

发布时间:2020-05-30 发布时间:
|

使用芯片:STM32F103ZET6

目的:利用stm32的定时器3输出PWM

所用寄存器及相应位(参考STM32参考手册):

(1)控制寄存器1(TIM1_CR1)


第0位CEN:计数器使能位;通过函数void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)  来实现。

第4位DIR:计数方式,默认向上,也可以设置为向下计数;

第5、6位CMS:设置计数对齐方式;

第7位ARPE:自动重装载预装载允许位,为0时TIMx_ARR没有缓冲,为1时TIMx_ARR被装入缓冲器

第8、9位CKD:设置定时器的时钟分频因子为1、2、4。


(2)DMA/中断使能寄存器(TIMx_DIER)


第0位UIE:更新中断允许位,为0时表示禁止更新中断,为1时表示运行更新中断。通过函数TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState )函数来实现。


(3)预分频寄存器(TIMx_PSC)


全部位:预分频器的值。计数器的时钟频率CK_CNT=fCK_PSC/(PSC[15:0]+1)。PSC包含了当更新事件产生时装入当前预分频器寄存器的值。用来设置时钟分频因子,再提供给计数器,作为计数器的时钟



(4)自动重装载寄存器(TIMx_ARR)


全部位:自动重装载的值,包含了将要传送至实际的自动重装载寄存器的数值。当自动重装载的值为空时,计数器不工作。


(5)计数器(TIMx_CNT)


全部位:计数器的值。


(6)状态寄存器(TIMx_SR)


该定时器用来标记当前与定时器相关的各种事件/中断是否发生。

第0位UIF:更新中断标记。当产生更新事件时该位由硬件置“1”,由软件清“0”。

为0时表示无更新事件产生;为1时更新中断等待响应。当寄存器被更新时该位由硬件置“1”。


(7)捕获/比较模式寄存器(TIMx_CCMR1/2)

 

TIMx_CCMR1控制CH1和CH2,TIMx_CCMR2控制CH3和CH4。

第4-6、12-14位OCxM:模式设置位,总共可配置成7种模式。PWM模式要将这三位设置成110/111。两种PWM模式的区别就是输出电平的极性相反。


(8)捕获/比较使能寄存器(TIMx_CCER)


CCxE位:输入/捕获x输出使能,这里CCx通道要配置为输出:该位为0表示关闭,OC1禁止输出;为1时开启,OCx信号输出到对应的输出引脚。


(9)捕获/比较寄存器(TIMx_CCR1~4)


四个寄存器类似,以CCR1为例。

分别对应4个输出通道CH1~CH4。输出模式下,该寄存器的值与CNT的值比较,并在OCx端口上产生输出信号。可通过调用函数void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2)修改占空比。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址