搞了好长时间,终于把2440的PWM搞定了,原来错误是出在我的疏忽上,有一句话没有好好看:NOTE: The bits have to be cleared at next writing.
下面是PWM的设置步骤:
一、设置CLKCON的PWMTIMER位为1。Control PCLK into PWMTIMER block. 0 = Disable, 1 = Enable
虽然复位值是1,但有时可能在某些地方修改,建议还是多这一句吧。
二、设置分频器TCFG0和TCFG1。使为期望之值。
三、设置TCON。一般要使Timer n auto reload on/off位为1;Timer n manual update为1
四、设置 TCNTBn和TCMPBn。说明书上讲了那么多,意思就这一句话:
当TCNTB > TCOMPB 时输出低,当TCNTB < TCOMPB输出高。此为“约定”设置。
五、启动,并清除手动更新位。
///
、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、
/*************************************************************************/
//backlight control
rGPBCON = 0x0a; //GPB0, GPB1 as a TOUT[0:1]
rGPBUP = 0x7fc; // The pull up function is disabled GPB[10:2]
rCLKCON |= 0x100;
rTCFG0 &= 0xFFFF00;
rTCFG0 |= 0x31; //prescal by 50, T0~1
rTCFG1 &= ~0xF0; //use timer1 ,1/2. 50MHz/50/2=500kHz
//rTCFG1 |= 0x00;
rTCNTB1 = 0x32;
rTCMPB1 = 0x10;
rTCON &= 0xFFF0FF;
rTCON |= 0xa00;
rTCON = 0x900; //start
///
PWM(Pulse Width Modulation)——脉宽调制,它是利用微控制器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量、通信、功率控制与变换等许多领域。
s3c2440芯片中一共有5个16位的定时器,其中有4个定时器(定时器0~定时器3)具有脉宽调制功能,因此用s3c2440可以很容易地实现PWM功能。下面就具体介绍如何实现PWM功能。