这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » PWM 一个PWM的例子

共2条 1/1 1 跳转至

PWM 一个PWM的例子

院士
2006-09-17 18:14:16     打赏
PWM 一个PWM的例子



关键词: 一个     例子    

院士
2006-12-22 22:43:00     打赏
2楼
问 请教周工或其它老师,如何用2214输出2路PWM信号以互补的方式驱动两只MOS管。输出脚为PWM2,PWM5,频率为400Hz.占空比可调或设为1:1。谢谢! 1: 可以使用双边沿输出模式。可以参考《基础教程》的相关内容。

根据表5.129,匹配1=匹配5,匹配2=匹配4,即可实现反相。它们同步修改就可以控制占空比。周期由匹配0控制。 2: 请教周工,PWM5为什么没有?/****************************************************************************
* 文件名:PWM2OUT.C
* 功能:输出两路PWM
* 说明:PWM5为单边沿控制,PWM2为双边沿控制,并滞后半个周期。
* 入口参数:PWM_T,PWM_D
* 出口参数:无
****************************************************************************/

void  PWM2OUT(uint32 PWM_T,uint32 PWM_D)
{  PINSEL0 = PINSEL0|0x8000;            // 设置PWM2连接到P0.7管脚
   PINSEL1 = PINSEL1|0x800;         // 设置PWM5连接到P0.21管脚
   PWMPCR = 0x2404;                    // 允许PWM2双边沿输出,PWM5单边沿输出   PWMPR = 0x00;                    // 不分频,计数频率为Fpclk
   PWMMCR = 0x02;                    // 设置PWMMR0匹配时复位PWMTC
   PWMMR0 = PWM_T;                    // 设置PWM周期
   PWMMR1 = PWM_T/2;                // 设置置位寄存器匹配值,在下半周期开始置高
   PWMMR2 = PWM_T/2+PWM_D;            // 复位匹配值
   PWMMR5 = PWM_D;                    // 单边沿PWM输出
   PWMLER = 0x27;                    // PWMMR0、PWMMR1、PWMMR2、PWMMR5锁存
   PWMTCR = 0x09;                    // 启动定时器,PWM使能   
}
   

void  PWMOUT(uint32 PWM_T,uint32 PWM_D)
{
   PINSEL1= PINSEL1|0x800;         // 设置PWM5连接到P0.21管脚
    
   PWMPR = 0x00;                    // 不分频,计数频率为Fpclk
   PWMMCR = 0x02;                    // 设置PWMMR0匹配时复位PWMTC
   PWMMR0 = PWM_T;                    // 设置PWM周期
   PWMMR5 = PWM_D;                    // 单边沿PWM输出
   PWMLER = 0x21;                    // PWMMR5锁存
   PWMPCR = 0x2000;                    // 允许PWM5单边沿输出
   PWMTCR = 0x09;                    // 启动定时器,PWM使能   
}
本人初学,请不吝指教!  3: 说明说明:调用PWM2OUT可以输出PWM2,但没有PWM5.调用PWMOUT也没有输出,但改为PWM6则可以输出。另外,我想问一下PWMPR是如何定义的,书上好象没有说

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]