📄 pwm_init.c
字号:
///////////////////////////////////////////////////////////////////头文件
#include <iolpc2148.h>
#include "LPC2148_sys_cnfg.h"
////////////////////////////////////////////////////////////////////////////////
void PWM_Rudder_Init(int i) //舵机,频率50HZ,占空比7.5%
{
int tmp;
tmp=Fpclk/50;
PWMPR=0x00; //时钟不分频
PWMMCR=0x02; //PWMMR0与PWMTC匹配时复位PWMTC
PWMPCR=(1<<2)| //PWM2双边沿控制
(1<<10); //使能PWM2输出
PWMMR0=tmp; //PWM速率控制/计数初值
PWMMR1=0; //PWM2的位置
PWMMR2=(tmp/20)*i; //设置PWM2的占空比,P0.7,舵机
PWMLER=0x7F; //锁存所有PWM匹配值
PWMTCR=0x02; //复位PWMTC
PWMTCR=0x09; //使能PWM
}
///////////////////////////////////////////////////////////////////////////////
void PWM_Motor_Init(int n) //驱动电机,频率1K,占空比60%
{
int tmp;
tmp=Fpclk/1000;
PWMPR=0x00; //时钟不分频
PWMMCR=0x02; //PWMMR0与PWMTC匹配时复位PWMTC
PWMPCR=(1<<4)| //PWM2双边沿控制
(1<<12); //使能PWM4输出
PWMMR0=tmp; //PWM速率控制/计数初值
PWMMR3=0; //PWM4的位置
PWMMR4=(tmp/20)*n; //设置PWM4的占空比,P0.8,驱动电机
PWMLER=0x7F; //锁存所有PWM匹配值
PWMTCR=0x02; //复位PWMTC
PWMTCR=0x09; //使能PWM
}
///////////////////////////////////////////////////////////////////////////////
void Search_Line(void)
{
if(IO1PIN==0x77<<16)
{
PWM_Rudder_Init(3);
PWM_Motor_Init(16);
}
else if(IO1PIN==0x6F<<16||IO1PIN==0x67<<16)
{
PWM_Rudder_Init(3);
PWM_Motor_Init(14);
}
else if(IO1PIN==0x5F<<16||IO1PIN==0x4F<<16)
{
PWM_Rudder_Init(3);
PWM_Motor_Init(12);
}
else if(IO1PIN==0x3F<<16||IO1PIN==0x1F<<16)
{
PWM_Rudder_Init(4);
PWM_Motor_Init(12);
}
else if(IO1PIN==0x7A<<16||IO1PIN==0x73<<16)
{
PWM_Rudder_Init(4);
PWM_Motor_Init(14);
}
else if(IO1PIN==0x7D<<16||IO1PIN==0x79<<16)
{
PWM_Rudder_Init(3);
PWM_Motor_Init(10);
}
else if(IO1PIN==0x7E<<16||IO1PIN==0x7C<<16)
{
PWM_Rudder_Init(3);
PWM_Motor_Init(10);
}
}
///////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -