| 
 
| 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;
 
 
 
 更详细的请看附件例子的注释。
 
 
 | 
 
×本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?注册 
  |