LPC2114用PWM产生时钟信号测试<br />采用Tektronix DPO7104数字示波器测试,条件<br />/* 系统设置, Fosc、Fcclk、Fcco、Fpclk必须定义*/<br />#define Fosc 11059200 //晶振频率,10MHz~25MHz,应当与实际一至<br />#define Fcclk (Fosc * 4) //系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ<br />#define Fcco (Fcclk * 4) //CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz<br />#define Fpclk (Fcclk / 4) * 4 //VPB时钟频率,只能为(Fcclk / 4)的1、2、4倍<br />在该条件下,输出最高频率信号为Fpclk/2,即为22 118 400Hz<br /><br />下面是源程序:/* PWM周期及占空比设置值 */<br />#define CYCLE_DATA 20000000 //设置波形输出频率,频率设置为(Fpclk/ PWMMR0),而PWMMR0必须<br />//为整数,所以PWM输出频率有限制,可能到达任何频率,即不连续<br />#define DUTY_CYCLE_DATA PWMMR0/2 //定义输出波形占空比<br />void PWM_Init(void)<br />{ PWMPR = 0x00; // 不分频,计数频率为Fpclk<br /> PWMMCR = 0x02; // 设置PWMMR0匹配时复位PWMTC<br /> PWMMR0 = Fpclk/CYCLE_DATA; // 设置PWM周期<br /> PWMMR6 = DUTY_CYCLE_DATA; // 设置PWM占空比<br /> PWMLER = 0x41; // PWMMR0、PWMMR6锁存<br /> PWMPCR = 0x4000; // 允许PWM6输出,单边PWM<br /> PWMTCR = 0x09; // 启动定时器,PWM使能<br />}<br />int main(void)<br />{ <br /> PINSEL0 = 0x00080000; // 设置PWM6连接到P0.9管脚<br /> PINSEL1 = 0x00000000; // 其它管脚设置为GPIO<br /> <br /> PWM_Init(); // PWM初始化<br /> <br /> while(1);<br /> return(0);<br />}<br /><br />
|