智能小车的main函数相关部分如下:
#include "stm32f10x.h"
#include "motor.h"
#include "interface.h"
//全局变量定义
uint16_t speed_count=0;//占空比计时器,50次一周期
int8_t left_speed_duty=MIN_SPEED_DUTY;
int8_t right_speed_duty=MIN_SPEED_DUTY;
uint8_t tick_1s = 0;//1s计数器
uint8_t tick_100ms = 0;//100ms计数器
uint8_t tick_1ms = 0;//1ms计数器
//uint8_t continue_time=0;
void GPIO_Conf(void);
void RCC_Conf(void);
void TIM2_Init(void);
void MotorInit(void);
int main(void)
{
// uint16_t i,j;
RCC_Conf();
GPIO_Conf();
TIM2_Init();
MotorInit();
// for(i=0;i<10000;i++)
// for(j=0;j<1000;j++);
while(1)
{
if(tick_1s < 30)
{
CarGo(); //全速3s
//CarBack(); // 全速2s
//CarRight(); // 半速右转1s
}
else
CarStop(); // 停止
}
}
其中motor.c函数中相关需要修改部分如下:
//Ïòǰ
void CarGo(void)
{
left_speed_duty=MAX_SPEED_DUTY;
right_speed_duty=MAX_SPEED_DUTY;
}
//向前
void CarLeft(void)
{
left_speed_duty=-MID_SPEED_DUTY;
right_speed_duty=MID_SPEED_DUTY;
}
//向左
void CarRight(void)
{
left_speed_duty=MID_SPEED_DUTY;
right_speed_duty=-MID_SPEED_DUTY;
}
//向右
void CarStop(void)
{
left_speed_duty=MIN_SPEED_DUTY;
right_speed_duty=MIN_SPEED_DUTY;
}
//后退
void CarBack(void)
{
left_speed_duty=-MAX_SPEED_DUTY;
right_speed_duty=-MAX_SPEED_DUTY;
}
void MotorInit(void)
{
MotorGPIO_Configuration();
CarStop();
}
现在要求向前,向后分别全速跑四秒,然后向右转两秒,最后停止四秒,请问应该怎么改上面代码呢?
有同学给改成这样,我不是很理解,i应该在哪里申明呢,不需要赋初始值吗?
//向前
void CarGo(int i)
{
left_speed_duty=4*i;
right_speed_duty=4*i;
}
//向左
void CarRight(void)
{
left_speed_duty=MID_SPEED_DUTY;
right_speed_duty=-MID_SPEED_DUTY;
}
//向右
void CarStop(void)
{
left_speed_duty=MIN_SPEED_DUTY;
right_speed_duty=MIN_SPEED_DUTY;
}
//后退
void CarBack(int i)
{
left_speed_duty=-4*i;
right_speed_duty=-4*i;
}
void MotorInit(void)
{
MotorGPIO_Configuration();
CarStop();
}