基于stm32的蓝牙加无线重力感应小车
单片机源程序如下:
- #include "stm32f10x.h"
- #include "delay.h"
- #include "usart.h"
- #include "uart3.h"
- #include "pwm.h"
- #include "dj.h"
- #include "stdlib.h"
- #include "math.h"
- #define FRONT 5 //前进上限
- #define AFTER -5 //后退上限
- #define LEFT 5 //左移上限
- #define RIGHT -5 //右移上限
- #define FA_RATE 25
- #define LR_RATE 25
- #define SPEED(x,y) TIM_SetCompare1(TIM2,x);TIM_SetCompare2(TIM2,y)
- #define DJ(A,B,C,D) DJ1=A;DJ2=B;DJ3=C;DJ4=D
- void vehicle_Init(void);
- int main(void)
- {
- u8 *p;
- int sum,sum1,sum2;
- float sum3;
- vehicle_Init(); //小车初始化
-
- while(1)
- {
- if(USART3_RX_STA&0x8000) //判断一帧数据接收完成
- {
- p=USART3_RX_BUF; //让p指向第一个角度值
- sum=atoi((char *)p);
- if(sum > FRONT)
- {
- DJ(1,0,1,0);
- sum1 = sum*FA_RATE;
- sum2 = sum*FA_RATE;
- }
- else if(sum< AFTER)
- {
- sum = abs(sum);
- DJ(0,1,0,1);
- sum1 = sum*FA_RATE;
- sum2 = sum*FA_RATE;
- }
- else
- {
- DJ(0,0,0,0);
- sum1 = 0;
- sum2 = 0;
- }
-
- while(*(p) != 0) p++; //让p指向第二个角度值
- p++;
-
- sum=atoi((char *)p);
- if(sum > LEFT)
- {
- sum3 = sum/90.0;
- sum1 = sum1 - sum1*sum3;
- }
- else if(sum < RIGHT)
- {
- sum = abs(sum);
- sum3 = sum/90.0;
- sum2 = sum2 - sum2*sum3;
- }
- SPEED(sum1,sum2);
- USART3_RX_STA = 0;
- }
- }
- }
- void vehicle_Init()
- {
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断优先级分组
-
- delay_init(); //延时函数初始化
-
- uart_init(9600); //串口1初始化
-
- usart3_init(9600); //串口3初始化
-
- TIM2_PWM_Init(1999,719); //PWM初始化
-
- dj_init(); //电机控制初始化
- }
复制代码
所有资料51hei提供下载:
小车.rar
(370.67 KB, 下载次数: 24)
|