【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%的波形了!
第一步:初始化相关寄存器。定时器选择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%的波形了!
相关文章推荐
- 【STM32F103攻城笔记】串口 实战
- 【STM32F103攻城笔记】输入捕捉实战
- 学习Android推送功能笔记(4)---Socket实战之服务器端
- 【STM32F103攻城笔记】内部晶振HSI倍频设置系统时钟
- STM32F103学习笔记 (八) PWM输出
- 【STM32F103攻城笔记】外部晶振HSE倍频设置系统时钟
- 【STM32F103攻城笔记】STM32之MDK(Keil)环境搭建(二)
- nodejs实战express笔记之增加编辑与删除功能
- 【STM32F103攻城笔记】STM32之MDK(Keil)环境搭建(一)
- Unity3D项目实战笔记(5):延时功能的几种实现
- 【JAVAWEB学习笔记】网上商城实战5:后台的功能模块
- NuttX 入门笔记6 STM32F103C8T6(STM32f103-minimum) 多路PWM测试-RGBLED
- 巧用gmail的标签功能,把gmail当个人笔记
- 孙鑫vc++ 第十一课 笔记 如何让CDC上输出的文字、图形具有保持功能
- JBuilder2005实战JSP之程序功能介绍(1)
- 关于java打印功能的最简单实现的学习笔记
- 高效掌握C#笔记[第四章]C#的面向对象功能
- ArcGIS 9.2 笔记(3):三维功能
- CentOS4.4下邮件服务器架设笔记之基本功能实现 推荐
- JBuilder2005实战JSP之程序功能介绍(6)