/*****************************直流电机控制子程序*******************************/
Uint16 Direction = 0; //【旋转方向设置】
int32 CmpA = 0; //占空比A
int32 CmpB = 0; //占空比B
int32 Cw = 0; //正转占空比
int32 Ccw= 0; //反转占空比
void MotorControl(void);
void MotorControl(void)
{
static Uint32 timer = 0;
Ccw= 0;
if(timer <= 900)
{
Cw+=15; //占空比逐渐增大,加在电机上的电压增大,电机启动
if(Cw>=8500)
{
Cw = 8500; //占空比8500/10000保持一段时间,保证电机启动(因为直流电机启动需要瞬间大电流)。
}
}
else //
{
Cw = 5000; //当电机启动后,减小占空比,电机以低速运行。
if(timer>=1000)
{
timer = 1000;
}
}
timer++;
if(Direction == 0)
{
CmpA = Cw;
CmpB = Ccw;
}
else
{
CmpA = Ccw;
CmpB = Cw;
}
}
1、看不懂用if怎么有循环的功能呢?“if(timer <= 900) Cw+=15;”
2、反向占空比为什么一直是0呢?
谢谢啦 |