全部博文(36)
分类: 嵌入式
2012-09-03 17:57:09
Pwm-pulse width modulation(脉冲宽度调制)。2440有5个16位的定时器。其中定时器0,1,2,3具有脉宽调试功能。定时器4是一个无输出引脚的内部定时器。
前面学了一下定时器的原理,那么这篇pwm的话,就是在上节的基础上多了一个比较缓冲寄存器(TCMPBn)。这个寄存器包含了一个被加载到比较寄存器中的与递减计数器相比较的初始值。这种TCNTBn和TCMPBn的双缓冲特征保证了改变频率和占空比是定时器产生稳定的输出。
我们要使用pwm功能,首先得配置相应定时器的管脚为TOUTn,这里跟使用定时器的功能是不一样的。定时器的功能,你配置好之后,在中断程序里面你可以做任何事情。而这里的pwm的功能,你只能使用相应的定时器的管脚,即配置成TOUTn之后,TOUTn将会输出高低电平。你可以不使能中断而直接使用pwm的功能。因为当你配置成TOUTn的时候,它就会默认是高电平输出的,当然你可以设置TCON寄存器,让它变换极性。然后当TCNTn减到与TCMPn相等的时候,就会使TOUTn的输出电平发生变化,当它减到0的时候,又一次变化,所以这个过程可以不用定时器的中断。但是我们可以使用定时器的中断,让它在中断里面做我们想做的事情,比如点亮几个led灯。
在2440的用户手册里面对pwm的功能进行了详细的分析,其中有一个pwm定时器操作的例子讲的非常的好,看懂了就搞懂了pwm的功能。Pwm在我们开发板上主要应用在蜂鸣器和lcd背光上。通过调节pwm占空比来控制蜂鸣器的发声和lcd的背光的变化。所以熟悉这个还是非常有必要的。
代码跟上一节的类似,不过多了一个配置管脚TOUTn和给TCMPBn赋值的语句。可以使用中断,也可以不使用中断。