zyh215 发表于 2014-7-7 13:41:15

LPC1768 关闭PWM时IO口电平

LPC1768 脉宽调制PWM已经可以用了,想做暂停PWM功能怎么做?
void MotorPWM_Init (void)
{
    uint32_t iTmp;
   
    LPC_PINCON->PINSEL4 |= (0x01 << 0)|(0x01 << 2)|(0x01 << 4)|(0x01 << 6);
    iTmp = SystemCoreClock/4/10000;                                     //1.4288kHz
    LPC_PWM1->PR= 6;                                                /* FPCLK_FREQ分频,PWM计数频率*/
                                                                        /* 为FPCLK_FREQ/10000         */
    LPC_PWM1->MCR = 0x02;                                             /* PWMMR0与EWMTC匹配时复位PWMTC */
    LPC_PWM1->PCR = (0 << 1)|                                       /* PWM1单边沿控制               */
                  (0 << 2)|                                       /* PWM2单边沿控制*/
                  (0 << 3)|                                       /* PWM3单边沿控制               */
                  (0 << 4)|                                       /* PWM4单边沿控制*/
                  (1 << 9)|                                       /* 使能PWM1输硜E                */
                  (1 << 10) |                                       /* 使能PWM2输硜E                */   
                  (1 << 11) |                                       /* 使能PWM3输硜E                */
                  (1 << 12);                                          /* 使能PWM4输硜E                */
    LPC_PWM1->MR0 = iTmp;                                             /* PWM速率控制/计数初值         */

                                                                        /* 设置单边沿脉冲的脉窥滞位置   */
    LPC_PWM1->MR1 = Set_PWM1;                                           /* PWM1的置位位置               */
    LPC_PWM1->MR2 = Set_PWM2;                                           /* PWM2的复位位置               */
    LPC_PWM1->MR3 = Set_PWM3;                                           /* PWM3的置位位置               */
    LPC_PWM1->MR4 = Set_PWM4;                                           /* PWM4的复位位置               */
    LPC_PWM1->MR5 = Set_PWM5;                                           /* PWM5的置位位置               */
    LPC_PWM1->MR6 = Set_PWM6;                                           /* PWM6的复位位置               */

    LPC_PWM1->LER = 0x7F;                                             /* 锁存所有PWM匹配值            */
        CtrPWMST(OFF);


void CtrPWMST(uint16_t OnOrOff)
{
        if(OnOrOff==ON)
        {

              LPC_PWM1->TCR = 0x02;                                             /* 复位PWMTC                  */
                LPC_PWM1->TCR = 0x09;                                             /* 开启PWM                      */
        }
        else
        {       
             LPC_PWM1->TCR = 0x00;                                             /* 关闭PWM                      */
        }
}
上述代码可以产生PWM,但关闭PWM时,端口电平却是高电平,电机一直工作,怎么设置才能在关闭PWM时,端口电平为低电平。

eiglxl 发表于 2014-7-7 14:09:06

可以设置空闲时的电平

gujingji 发表于 2014-7-7 14:45:10

把你想设置的PWM通道对应的MR寄存器设置为0就可以了

zyh215 发表于 2014-7-7 16:05:18

感觉3楼的法子像停止,而不是暂停,但我还是按你的法子做了,谢谢。

Excellence 发表于 2014-7-7 16:07:50

关使能啊。
页: [1]
查看完整版本: LPC1768 关闭PWM时IO口电平