LPC1343有两个16位计时器和两个32位计时器,这里我用了TIMER16B0的CT16B0_MAT0(引脚PIO0_8)作为PWM输出(PWM周期为139uS),控制SysTick产生1ms的定时,定时唤醒主程序修改PWM的输出脉冲宽度。这样从LPC1343的PIO0_8输出的脉冲宽度从大到小,再从小到大,周而复始......接到PIO0_8的LED(另一端接地)也会呼吸哦!
我是从例子blinky(LED的闪烁)修改的,注意:blinky例子使用72MHz系统主时钟(由系统PLL电路和12MHz晶体获得)。
下面是PWM初始化的步骤:
1、 初始化SYSTick,这个和PWM没有关系,只是提供程序定时唤醒用的,TICK的重载值越小TICK频率越大,因为是一个24位的,所以不能大于16.7M
2、 提供了timer160的时钟后才能操作;
3、 将引脚PIO0_8设为CT16B0_MAT0功能;
4、 设置CT16B0_MAT0的匹配值;
5、 将CT16B0_MAT0的PWM模式打开;
6、 设置予分频寄存器;
7、 设置如果MR3和TC匹配,TC复位;
8、 设置CT16B0_MAT3的匹配值;
9、 设置计数控制寄存器选择计时器模式(每个PCLK上升沿;
8、 启动计数:TMR16B0TCR[0]=1;
更详细的请看附件例子的注释。
|