OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7515|回复: 1

基于STM32F103C8T6最小系统的 手机蓝牙智能小车,硬件全部保证没问题 主要是程序 求大神

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-11-27
在线时间
0 小时
发表于 2015-11-27 15:59:14 | 显示全部楼层 |阅读模式
5金钱
最近想做一个 基于STM32F103C8T6最小系统的 手机蓝牙智能小车   由于知识所限   需要向给位大神求助 

手机APP做好   电路驱动 什么都是好的   主要是程序出现问题   希望大家帮帮忙


代码附上来了    
  前灯 PB12
右灯pb13
zuo pb14
蜂鸣器 PB15

/*

硬件链接:
左电机控制端口:PA3、PA4
右电机控制端口:PA1、PA2      
*/

#include "stm32f10x.h"//声明头文件
#include "stm32f10x_exti.h" 
#include "stm32f10x_gpio.h" 
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"


#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
#define AA 35//左轮速度调节值
#define BB 35//右轮速度调节值

uchar a=0;//定义一个变量a,用来读取串口的数据

/*有参数延时函数*/
void delay(__IO uint32_t nCount)
{
  for (; nCount != 0; nCount--);
}


unsigned int temp=0; 
unsigned char rebuf[5]; 
unsigned int start=0; 

void GPIO_DengConfiguration()
{
    GPIO_InitTypeDef  GPIO_InitStructure;

    /* 初始化LED的GPIO管脚,配置为推挽输出 */  //设置端口
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;  //车灯GPIO_Pin12,13,14端口 15蜂鸣器端口
 //设置对端口的模式
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //设置为 推挽(Push-Pull)输出
 //
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //最大输出速度为50MHz

    GPIO_Init(GPIOB, &GPIO_InitStructure);
}




 //前进子程序
void go1()  
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(500000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }
 
  
//前进子程序 
void go2()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(400000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }

//前进子程序
void go3()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(300000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14);  //关闭转向灯

  }

//前进子程序
void go4()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(200000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }

//前进子程序
void go5()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(100000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }


//前进子程序
void go6()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }

//小车后退的子程序
void hui1()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(500000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   } 

//小车后退的子程序
void hui2()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(400000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

   }
   
 //小车后退的子程序 
 void hui3()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(300000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   }  
   
  //小车后退的子程序 
 void hui4()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

    GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(200000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   } 
   
   //小车后退的子程序 
 void hui5()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(100000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

   } 
   
   //小车后退的子程序 
 void hui6()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   }  


//小车左转弯子程序   
 void turnleft()
     {
 GPIO_ResetBits(GPIOB,GPIO_Pin_13);//转向灯打开

 GPIO_SetBits(GPIOA,GPIO_Pin_3);
 GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
 
  GPIO_SetBits(GPIOA,GPIO_Pin_1);
  GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子停止
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //左边轮子停止
delay(250000);
 
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯  

}
 
 
//小车右转弯子程序
 void turnright()
 {
 GPIO_ResetBits(GPIOB,GPIO_Pin_14);//转向灯打开
  
 GPIO_SetBits(GPIOA,GPIO_Pin_3);
 GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子停止
 
  GPIO_SetBits(GPIOA,GPIO_Pin_1);
  GPIO_ResetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子停止
delay(250000);
 
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯  

}


 //停止子程序
 void down()
  {
 GPIO_SetBits(GPIOA,GPIO_Pin_1);
 GPIO_SetBits(GPIOA,GPIO_Pin_2);
 GPIO_SetBits(GPIOA,GPIO_Pin_3);
 GPIO_SetBits(GPIOA,GPIO_Pin_4); //左右轮全部停止


GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯 
  }
 
int main()//主程序
{
while(1)//死循环 

   if(a==0x14||a==0x15||a==0x54||a==0x55||a==0x64||a==0x65)//如果是就前进
go1();
if(a==0x16||a==0x17||a==0x56||a==0x57||a==0x66||a==0x67)//如果是就前进
go2();
if(a==0x18||a==0x19||a==0x58||a==0x59||a==0x68||a==0x69)//如果是就前进
go3();
if(a==0x1a||a==0x1b||a==0x5a||a==0x5b||a==0x6a||a==0x6b)//如果是就前进
go4();
if(a==0x1c||a==0x1d||a==0x5c||a==0x5d||a==0x6c||a==0x6d)//如果是就前进
go5();
if(a==0x1e||a==0x1f||a==0x5e||a==0x5f||a==0x6e||a==0x6f)//如果是就前进
go6();

   if(a==0x24||a==0x25||a==0x74||a==0x75||a==0x84||a==0x85)//如果是就后退
hui1();
if(a==0x26||a==0x27||a==0x76||a==0x77||a==0x86||a==0x87)//如果是就后退
hui2();
if(a==0x28||a==0x29||a==0x78||a==0x79||a==0x88||a==0x89)//如果是就后退
hui3();
if(a==0x2a||a==0x2b||a==0x7a||a==0x7b||a==0x8a||a==0x8b)//如果是就后退
hui4();
if(a==0x2c||a==0x2d||a==0x7c||a==0x7d||a==0x8c||a==0x8d)//如果是就后退
hui5();
if(a==0x2e||a==0x2f||a==0x7e||a==0x7d||a==0x8e||a==0x8f)//如果是就后退
hui6();

if(a==0x3f)//如果是0x3f就左转
turnleft();
if(a==0x4f)//如果是0x4f就右转
turnright();
if(a==0x00)//如果是0x00就停止
down();
if(a==0xa0)//如果是0xa0车灯打开
GPIO_ResetBits(GPIOB,GPIO_Pin_12); //打开转向灯
if(a==0xb0)//如果是0xb0车灯关闭
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯
if(a==0xc0)//如果是0xc0蜂鸣器鸣响
GPIO_ResetBits(GPIOB,GPIO_Pin_15); //打开蜂鸣器
if(a==0xd0)//如果是0xd0蜂鸣器关
   GPIO_SetBits(GPIOB,GPIO_Pin_15);  //关闭蜂鸣器

else
down();
}
}



void (unsigned char DataToSend)  //串口中断服务程序
{    
//   USART_SendData(USART1, (unsigned char) DataToSend);
//   a= ;//读取单片机串口接受的蓝牙模块发送的数据
   a = DataToSend; 
}




/*

硬件链接:
左电机控制端口:PA3、PA4
右电机控制端口:PA1、PA2      
*/

#include "stm32f10x.h"//声明头文件
#include "stm32f10x_exti.h" 
#include "stm32f10x_gpio.h" 
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"


#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
#define AA 35//左轮速度调节值
#define BB 35//右轮速度调节值

uchar a=0;//定义一个变量a,用来读取串口的数据

/*有参数延时函数*/
void delay(__IO uint32_t nCount)
{
  for (; nCount != 0; nCount--);
}


unsigned int temp=0; 
unsigned char rebuf[5]; 
unsigned int start=0; 

void GPIO_DengConfiguration()
{
    GPIO_InitTypeDef  GPIO_InitStructure;

    /* 初始化LED的GPIO管脚,配置为推挽输出 */  //设置端口
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;  //车灯GPIO_Pin12,13,14端口 15蜂鸣器端口
 //设置对端口的模式
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //设置为 推挽(Push-Pull)输出
 //
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //最大输出速度为50MHz

    GPIO_Init(GPIOB, &GPIO_InitStructure);
}




 //前进子程序
void go1()  
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(500000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }
 
  
//前进子程序 
void go2()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(400000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }

//前进子程序
void go3()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(300000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14);  //关闭转向灯

  }

//前进子程序
void go4()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(200000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }

//前进子程序
void go5()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

delay(100000);
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }


//前进子程序
void go6()
  {
    GPIO_SetBits(GPIOA,GPIO_Pin_3);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //关闭左边轮子

GPIO_SetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //关闭右边轮子

GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

  }

//小车后退的子程序
void hui1()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(500000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   } 

//小车后退的子程序
void hui2()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(400000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

   }
   
 //小车后退的子程序 
 void hui3()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(300000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   }  
   
  //小车后退的子程序 
 void hui4()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

    GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(200000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   } 
   
   //小车后退的子程序 
 void hui5()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
   delay(100000);

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14);   //关闭转向灯

   } 
   
   //小车后退的子程序 
 void hui6()
   {
GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_3); 
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_3); //关闭左边轮子

   GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子倒转
GPIO_ResetBits(GPIOA,GPIO_Pin_1);  
delay(BB);

   GPIO_SetBits(GPIOA,GPIO_Pin_1);  //关闭右边轮子
  

    GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯

   }  


//小车左转弯子程序   
 void turnleft()
     {
 GPIO_ResetBits(GPIOB,GPIO_Pin_13);//转向灯打开

 GPIO_SetBits(GPIOA,GPIO_Pin_3);
 GPIO_ResetBits(GPIOA,GPIO_Pin_4); //左边轮子正转
 
  GPIO_SetBits(GPIOA,GPIO_Pin_1);
  GPIO_SetBits(GPIOA,GPIO_Pin_2); //右边轮子停止
delay(AA);

GPIO_SetBits(GPIOA,GPIO_Pin_4);  //左边轮子停止
delay(250000);
 
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯  

}
 
 
//小车右转弯子程序
 void turnright()
 {
 GPIO_ResetBits(GPIOB,GPIO_Pin_14);//转向灯打开
  
 GPIO_SetBits(GPIOA,GPIO_Pin_3);
 GPIO_SetBits(GPIOA,GPIO_Pin_4); //左边轮子停止
 
  GPIO_SetBits(GPIOA,GPIO_Pin_1);
  GPIO_ResetBits(GPIOA,GPIO_Pin_2); //右边轮子正转
delay(BB);

GPIO_SetBits(GPIOA,GPIO_Pin_2);  //右边轮子停止
delay(250000);
 
GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯  

}


 //停止子程序
 void down()
  {
 GPIO_SetBits(GPIOA,GPIO_Pin_1);
 GPIO_SetBits(GPIOA,GPIO_Pin_2);
 GPIO_SetBits(GPIOA,GPIO_Pin_3);
 GPIO_SetBits(GPIOA,GPIO_Pin_4); //左右轮全部停止


GPIO_SetBits(GPIOB,GPIO_Pin_13);
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯 
  }
 
int main()//主程序
{
while(1)//死循环 

   if(a==0x14||a==0x15||a==0x54||a==0x55||a==0x64||a==0x65)//如果是就前进
go1();
if(a==0x16||a==0x17||a==0x56||a==0x57||a==0x66||a==0x67)//如果是就前进
go2();
if(a==0x18||a==0x19||a==0x58||a==0x59||a==0x68||a==0x69)//如果是就前进
go3();
if(a==0x1a||a==0x1b||a==0x5a||a==0x5b||a==0x6a||a==0x6b)//如果是就前进
go4();
if(a==0x1c||a==0x1d||a==0x5c||a==0x5d||a==0x6c||a==0x6d)//如果是就前进
go5();
if(a==0x1e||a==0x1f||a==0x5e||a==0x5f||a==0x6e||a==0x6f)//如果是就前进
go6();

   if(a==0x24||a==0x25||a==0x74||a==0x75||a==0x84||a==0x85)//如果是就后退
hui1();
if(a==0x26||a==0x27||a==0x76||a==0x77||a==0x86||a==0x87)//如果是就后退
hui2();
if(a==0x28||a==0x29||a==0x78||a==0x79||a==0x88||a==0x89)//如果是就后退
hui3();
if(a==0x2a||a==0x2b||a==0x7a||a==0x7b||a==0x8a||a==0x8b)//如果是就后退
hui4();
if(a==0x2c||a==0x2d||a==0x7c||a==0x7d||a==0x8c||a==0x8d)//如果是就后退
hui5();
if(a==0x2e||a==0x2f||a==0x7e||a==0x7d||a==0x8e||a==0x8f)//如果是就后退
hui6();

if(a==0x3f)//如果是0x3f就左转
turnleft();
if(a==0x4f)//如果是0x4f就右转
turnright();
if(a==0x00)//如果是0x00就停止
down();
if(a==0xa0)//如果是0xa0车灯打开
GPIO_ResetBits(GPIOB,GPIO_Pin_12); //打开转向灯
if(a==0xb0)//如果是0xb0车灯关闭
GPIO_SetBits(GPIOB,GPIO_Pin_14); //关闭转向灯
if(a==0xc0)//如果是0xc0蜂鸣器鸣响
GPIO_ResetBits(GPIOB,GPIO_Pin_15); //打开蜂鸣器
if(a==0xd0)//如果是0xd0蜂鸣器关
   GPIO_SetBits(GPIOB,GPIO_Pin_15);  //关闭蜂鸣器

else
down();
}
}



void (unsigned char DataToSend)  //串口中断服务程序
{    
//   USART_SendData(USART1, (unsigned char) DataToSend);
//   a= ;//读取单片机串口接受的蓝牙模块发送的数据
   a = DataToSend; 
}





Project.uvproj

16.82 KB, 下载次数: 183

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-11-27 20:22:02 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-31 20:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表