初级会员

- 积分
- 50
- 金钱
- 50
- 注册时间
- 2018-8-7
- 在线时间
- 7 小时
|
2金钱
小白初学32写了个循迹小车程序,但是实现不了循迹功能,弄了好久不知道问题出在哪,求助各位大神帮忙看一下什么问题
#include "delay.h"
#include "pwm.h"
#include "key.h"
#include "iopz.h"
#include "xd.h"
void KEY_TS1(void); //起始速度初始化
void GPIO_init(void);
void HWXJ(void); //红外循迹初始化
u8 flag=1,F,Z;
int main(void)
{
delay_init();
GPIO_init();
KEY_Init();
TIM3_PWM_Init(1439,0); //不分频。PWM频率=72000/(1439+1)=50Khz
while(flag)
{
KEY_TS1(); //按键设置起始速度:快,慢
}
while(1)
{
HWXJ();
}
}
//* 按键控制起始速度 *//
void KEY_TS1(void)
{
if(KEY0==0) //KEY0高速模式
{
delay_ms(5);
if(KEY0==0){
TIM_SetCompare1(TIM3,1400);
TIM_SetCompare2(TIM3,1400);
flag=0,Z=1;
while(!KEY0);
}
}
if(KEY1==0) //KEY1低速模式
{
delay_ms(5);
if(KEY1==0){
TIM_SetCompare1(TIM3,1000);
TIM_SetCompare2(TIM3,1000);
flag=0,Z=0;
while(!KEY1);
}
}
}
//* 红外循迹 *//
void HWXJ(void)
{
if((HW0==1)&&(HW1==1)&&(HW2==1)&&(HW3==1)) //停止
{
TIM_SetCompare1(TIM3,0);
TIM_SetCompare2(TIM3,0);
}
if((HW0==1)&&(HW1==1)&&(HW2==0)&&(HW3==1)) //前进
{
if(Z){ //高速
TIM_SetCompare1(TIM3,1200);
TIM_SetCompare2(TIM3,1200);
}
else { //低速
TIM_SetCompare1(TIM3,1000);
TIM_SetCompare2(TIM3,1000);
}
if((HW0==0)&&(HW1==1)&&(HW3==1)) //中左转
{
TIM_SetCompare1(TIM3,1300);
TIM_SetCompare2(TIM3,0);
}
if((HW0==1)&&(HW1==0)&&(HW3==1)) //小左转
{
TIM_SetCompare1(TIM3,1100);
TIM_SetCompare2(TIM3,0);
}
if((HW0==0)&&(HW1==0)&&(HW3==1)) //大左转
{
TIM_SetCompare1(TIM3,0);
TIM_SetCompare2(TIM3,1430);
}
if((HW0==1)&&(HW1==1)&&(HW3==0)) //小右转
{
TIM_SetCompare1(TIM3,0);
TIM_SetCompare2(TIM3,1100);
}
}
}
HW0对应左边第一根红外管,以此类推,另HW2为中间正前方的红外管,比其他四根管子突出一点,
因为右边第二个的红外管坏了,所以暂时只弄了小右转,电机用的是直流电机
|
|