打印

lpc1343之二:TIMER16 和 PWM

[复制链接]
2106|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yoyowodeai|  楼主 | 2010-6-29 13:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;




    更详细的请看附件例子的注释。

pwmtest.zip

121.56 KB

相关帖子

沙发
3B1105| | 2010-6-29 13:39 | 只看该作者
楼主指的32位特殊运算要求是指?
难道32位不胜在速度快么?

使用特权

评论回复
板凳
想实习去| | 2010-6-29 13:40 | 只看该作者
说的有道理,最近我把8位升到32 .感觉多此一举。
按说,我们做设计的应当化繁为简才对,有时候可是为了提升整机的形象吧。
就此机会学点东东。
谢谢你。

使用特权

评论回复
地板
北京户口| | 2010-6-29 13:40 | 只看该作者
楼主指的32位特殊运算要求是指?难道32位不胜在速度快么?



----------------------------------------------------------------







个人认为32位机在计算速度和计算精度上是胜出的,而8位机也有资源消耗低(起码ROM、RAM要少用很多)、耗电低(资源消耗低的结果)、产品线丰富(得益于多年的积累)的特点。







大家都有优势、互相填补空白,看应用选择用哪种!

使用特权

评论回复
5
huzixian| | 2010-6-29 13:41 | 只看该作者
十分同意:设计的应当化繁为简。
这不但是节省成本的问题,而是为了保证应用能更稳定可靠的工作。

使用特权

评论回复
6
rxz86| | 2012-10-25 17:19 | 只看该作者
最近在弄1343,感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

191

主题

1265

帖子

2

粉丝