您的位置:首页 > 其它

【STM32F103攻城笔记】PWM功能实战

2017-06-02 09:58 330 查看
系统时钟是默认的HSI的8MHz频率!这个会影响计时器的计数频率,所以要知道要这个频率,以保证以后自己可以根据分频来控制PWM输出波形的频率大小!这个对于实际项目中的开发很重要,大都电机对于频率都会有要求,这里先不纠结这个,我们先来产生不同占空比的波形!系统时钟默认为8MHz。

第一步:初始化相关寄存器。定时器选择TIM3,通道选择CH2,即PA7端口。(这里注意,PA7口和TIM3_CH3是同一端口的复用功能,所以必须要对应,如果不想不对应的话就要设置映射,这里不对这个进行设置说明)。

代码如下(库函数实现):



第二步:写入参数,我要一个以周期为800个计数值,不分频的定时器,

代码就是  TIM3_PWM_Init(799,0); (这里注意,定时器是从0开始的,所以800个计数值就是0~799,所以设置799)

最后设置占空比的库函数就是TIM_SetCompare2(TIM3,400);



这个函数的第一个值就是选择定时器,第二个参数就是我们在刚才设置的800个计数值中所占的个数,这样占空比就等于TIMCompare2/800=400/800 =0.5即高低电平个占1/2周期!(注意TIMCompare2是对2通道,如果上面我们设置的是1通道那应该为TIMCompare1了,一次类推。。)

最后主函数代码:

int main (void)

{

TIM3_PWM_Init(799,0); 

while(1)
{  
    TIM_SetCompare2(TIM3,400); 
}

}

我们利用示波器连接PA7端口就可以看到占空比为50%的波形了!

如果TIM_SetCompare2(TIM3,200),我们可以看到高电平占空比为200/800=25%的波形了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息