首先,对于一个外设而言,最重要的就是时钟的使能与配置,相关操作见2.1 时钟配置。查阅参考手册的相应章节,可知时钟可由外部输入产生,也可通过使能内部RCC(Reset and clock control)上的TIM外设来利用系统的时钟CK_INT(STM32F103为72MHz)。在这里我们选择的是后一种方法。
在产生了CK_INT内部TIM时钟信号后,先进入PSC Prescaler寄存器进行预分频(由TIM_Prescaler +1决定,定时器实际获得的计数频率为 。而后,APR寄存器的值(由TIM_Period决定)决定了PWM波的周期。外设以 f C K _ C N T f_{CK_CNT} fCK_CNT 的频率计数,并存储在CNT counter寄存器内,这部分内容详见2.3 定时器配置中的TIM_TimeBaseInit()函数。当CNT counter寄存器内的值与APR寄存器的值相等时,产生中断(在此例子中未用到),并置零CNT counter寄存器(根据设置)。此外,CNT counter寄存器内的值还与Capture/Compare x register内的值(由TIM_Pulse决定)进行比对,可分别设置大于/小于时的输出电平。
综上,可得PWM波的频率为 :
占空比(假设CNT counter寄存器内的值比Capture/Compare x register内的值小时输出高电平)为:
首先,对于一个外设而言,最重要的就是时钟的使能与配置,相关操作见2.1 时钟配置。查阅参考手册的相应章节,可知时钟可由外部输入产生,也可通过使能内部RCC(Reset and clock control)上的TIM外设来利用系统的时钟CK_INT(STM32F103为72MHz)。在这里我们选择的是后一种方法。
在产生了CK_INT内部TIM时钟信号后,先进入PSC Prescaler寄存器进行预分频(由TIM_Prescaler +1决定,定时器实际获得的计数频率为 。而后,APR寄存器的值(由TIM_Period决定)决定了PWM波的周期。外设以 f C K _ C N T f_{CK_CNT} fCK_CNT 的频率计数,并存储在CNT counter寄存器内,这部分内容详见2.3 定时器配置中的TIM_TimeBaseInit()函数。当CNT counter寄存器内的值与APR寄存器的值相等时,产生中断(在此例子中未用到),并置零CNT counter寄存器(根据设置)。此外,CNT counter寄存器内的值还与Capture/Compare x register内的值(由TIM_Pulse决定)进行比对,可分别设置大于/小于时的输出电平。
综上,可得PWM波的频率为 :
占空比(假设CNT counter寄存器内的值比Capture/Compare x register内的值小时输出高电平)为: