1–原理:
通过开发板上的三个按键控制三个模式–按键1,2,3分别代表蓝牙控制,红外循迹,舵机加超声波避障,切换功能时按复位键就行;
2:代码;
主函数:
#include "move.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "trailing.h"
#include "key.h"
#include "control.h"
#include "wave.h"
int main()
{
u8 mode;
Stm32_Clock_Init(9);
delay_init(72);
key_init();
uart_init(72,9600);
MOVE_Init(7199,0);//PWM频率=72000(719+1)=100Khz
left_PWM=100;
right_PWM=100;
stop();
while(1)
{
go(10);
mode=key();
printf("mode%d",mode);
switch(mode)
{
case 1:control();break;
case 2:trailing();break;
case 3:wave_init();
default:break;
}
}
}
按键控制:
key.h
#ifndef _KEY_H_
#define _KEY_H_
#include "sys.h"
#define KEY_0 PCin(5)
#define KEY_1 PAin(15)
#define KEY_UP PAin(0)
void key_init(void);
u8 key(void);
#endif
key.c
#include "key.h"
void key_init()
{
RCC->APB2ENR |=1<<2;
RCC->APB2ENR |=1<<4;
GPIOA->CRL &=0XFFFFFFF0;//PA0
GPIOA->CRL |=0X00000008;
GPIOA->CRH &=0X0FFFFFFF;//PA15
GPIOA->CRH |=0X80000000;
GPIOA->CRL &=0XFF0FFFFF;//PC5
GPIOA->CRL |=0X00800000;
}
u8 key()
{
key_init();
if(KEY_0==0)
return 1;
else if(KEY_1==0)
return 2;
else if(KEY_UP==1)
return 3;
else
return 0;
}
该部分代码都比较简单;
到这小车主体功能大概就差不多了,下篇介绍下硬件方面的问题;