新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2015-11-27
- 在线时间
- 0 小时
|
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;
}
|
|