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时,端口电平为低电平。 可以设置空闲时的电平 把你想设置的PWM通道对应的MR寄存器设置为0就可以了 感觉3楼的法子像停止,而不是暂停,但我还是按你的法子做了,谢谢。 关使能啊。
页:
[1]