欢迎来到天天文库
浏览记录
ID:40711779
大小:640.00 KB
页数:4页
时间:2019-08-06
《SDLu的MSP430入门学习笔记(8)定时器TimerA(3)比较输》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、S.D.Lu的MSP430入门学习笔记(8):定时器TimerA(3)比较输出PWM本篇笔记介绍如何使用TimerA的比较模式输出PWM信号。PWM信号有两个参数,周期T和脉宽D。为了实现PWM的控制,我们将通过TACCR0控制周期,通过TACCR1控制脉宽。输出选择模式7(或模式6)。在本例中,输出模式6和输出模式7只是第一个周期输出可能不同,从第二个周期开始输出是一样的。CCR1单元的输出引脚是P1.2。如下图,请参考MSP430G2x52、G2x12系列数据手册。将P1.2的功能按下图配置,请参考MSP430G2x52、G2x12系列数据手册。程序如下:程序运行结
2、果是P1.2口输出占空比为20%的PWM信号。在本例中,TIME用于控制PWM周期,DUTY指的是占空比,取值范围0~100。需要特别注意的是,在14行中用到了乘法和除法运算,如果不注意,乘法非常容易产生溢出。本例中将TIME定义为(1000ul),其中1000是TIME的数值,ul为后缀,它表示1000是一个unsignedlong类型的数据,这是IAR编译环境定义的。将TIME定义为unsignedlong类型之后,14行右边的乘法运算结果将保存为32位长度,这样就避免了溢出。如果将TIME定义改为#defineTIME(1000),则当TIME*DUTY的值大于0
3、xFFFF时,就会出现溢出,无法得到我们预想的结果。本例中,9~17行的代码被执行一次之后,CPU就进入LPM0模式,不再执行任何语句。PWM信号不是由CPU控制IO口产生的,而是由ACLK驱动TimerA产生的。从图12-12可以看出,模式1、4、5不能用于输出PWM信号,模式2-模式6、模式3-模式7是两对反相的输出模式。输出模式2,3,6,和7对于输出单元0无效,因为在这些模式下,EQUx=EQU0。因此,CCR0单元需要以控制IO的方式才能输出PWM信号。另外,也可以通过TimerA的溢出中断控制PWM频率。该方法下同时输出2路PWM信号的程序如下:程序运行结果
4、是,在P1.2输出30%占空比的PWM信号,在P1.4输出70%占空比的PWM信号。该例中,2路PWM信号的频率相同,占空比分别通过TACCR1和TACCR2控制。因为本例中PWM的频率由TimerA的溢出率控制,CCR1和CCR2的赋值是溢出值0xFFFF减去(TIME*DUTY/100),所以输出选择模式3,它是模式7的反相。IO端口的配置参考数据手册中的相关内容。作者:S.D.Lu深圳2014-4-9
此文档下载收益归作者所有