标题:
STM32F103舵机+电机控制机器人程序
[打印本页]
作者:
MaxWell_nice
时间:
2019-7-13 16:20
标题:
STM32F103舵机+电机控制机器人程序
本人自己写的程序,之前参加比赛用的,不懂就问
单片机源程序如下:
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "string.h"
volatile u8 aRxBuffer[100]={0};
volatile u8 RxCounter=0;
volatile u8 ReceiveState=0;
volatile u8 aRxBuffer2[100]={0};
volatile u8 RxCounter2=0;
volatile u8 ReceiveState2=0;
char flag=0;
float a=0;
float b=0;
float c=0;
float d=0;
u16 m[2]={0};
char timeflag=0;
int x=0;
int main(void)
{
u16 time1,time2;
int i=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart1_init(9600); //串口初始化为115200
uart3_init(9600);
LED_Init(); //LED端口初始化
TIM3_PWM_Init(2879,0); //不分频。PWM频率=72000000/900=80Khz
TIM_SetCompare1(TIM3,0);
TIM_SetCompare2(TIM3,0);
while(1)
{
if(flag==1)
{
delay_ms(120);
TIM_SetCompare1(TIM3,a);
TIM_SetCompare2(TIM3,b);
if(a>=1500) a--;
}
if(flag==2)
{
delay_ms(time1);
TIM_SetCompare1(TIM3,m[0]);
//TIM_SetCompare2(TIM3,m[1]);
if(m[0]>=1500) m[0]--;
}
if(flag==3)
{
//delay_ms(8000);
TIM_SetCompare1(TIM3,2735);
TIM_SetCompare2(TIM3,2735);
for(x=0;x<=7;x++)
{
delay_ms(1000);
}
TIM_SetCompare1(TIM3,0);
TIM_SetCompare2(TIM3,0);
flag=0;
}
if(timeflag==1)
{
timeflag=0;
TIM_SetCompare2(TIM3,m[1]);
if(m[1]>=1500) m[1]--;
//printf("111");
}
if( ReceiveState == 1) //电脑调试
{
for(i=0;i<=8;i++)
{
if((aRxBuffer[i]==0x4d)&&(aRxBuffer[i+1]==0x4d))
{
if(aRxBuffer[i+8]==0x00)
{
flag=0;
TIM_ITConfig(TIM5,TIM_IT_Update,DISABLE );
m[0]=(aRxBuffer[i+3]<<8)+(aRxBuffer[i+2]);
m[1]=(aRxBuffer[i+6]<<8)+(aRxBuffer[i+5]);
TIM_SetCompare1(TIM3,m[0]);
TIM_SetCompare2(TIM3,m[1]);
PBout(13)=aRxBuffer[i+4];
PBout(14)=aRxBuffer[i+7];
a=((float)m[0])/2879;
b=((float)m[1])/2879;
printf("%.2f%% : %.2f%%",a*100,b*100);
break;
}
if(aRxBuffer[i+8]==0x01)
{
m[0]=(aRxBuffer[i+3]<<8)+(aRxBuffer[i+2]);
m[1]=(aRxBuffer[i+6]<<8)+(aRxBuffer[i+5]);
PBout(13)=aRxBuffer[i+4];
PBout(14)=aRxBuffer[i+7];
flag=2;
time1=aRxBuffer[i+9];
time2=((u16)aRxBuffer[i+10])*100;
printf("time1 = %d",time1);
printf("time2 = %d",time2);
TIM_SetCompare1(TIM3,m[0]);
TIM_SetCompare2(TIM3,m[1]);
TIM5_Int_Init(time2,7199);
break;
}
}
}
memset((void *)aRxBuffer,0,100);
ReceiveState=0;
RxCounter=0;
}
if(ReceiveState2 == 1)
{
printf("ok");
if(aRxBuffer2[0]==0xFF)
{
if(aRxBuffer2[1]==0xaa) //前进
{
flag=0;
a=2159;
b=2101;
TIM_SetCompare1(TIM3,a);
TIM_SetCompare2(TIM3,b);
PBout(13)=1;
PBout(14)=1;
c=((float)2159)/2879;
d=((float)2101)/2879;
printf("%.2f%% : %.2f%%",c*100,d*100);
}
if(aRxBuffer2[2]==0xaa) //左转
{
flag=0;
a=1958;
b=1987;
TIM_SetCompare1(TIM3,a);
TIM_SetCompare2(TIM3,b);
PBout(13)=1;
PBout(14)=1;
c=((float)1958)/2879;
d=((float)1987)/2879;
printf("%.2f%% : %.2f%%",c*100,d*100);
}
if(aRxBuffer2[3]==0xaa) //右转
{
flag=0;
a=2159;
b=1958;
TIM_SetCompare1(TIM3,a);
TIM_SetCompare2(TIM3,b);
PBout(13)=1;
PBout(14)=1;
c=((float)2159)/2879;
d=((float)1958)/2879;
printf("%.2f%% : %.2f%%",c*100,d*100);
}
if(aRxBuffer2[4]==0xaa) //切割运动
{
flag=3;
PBout(13)=1;
PBout(14)=1;
}
if(aRxBuffer2[5]==0xaa) //停
{
flag=0;
a=0;
b=0;
TIM_SetCompare1(TIM3,a);
TIM_SetCompare2(TIM3,b);
PBout(13)=1;
PBout(14)=1;
c=((float)0)/2879;
d=((float)0)/2879;
printf("%.2f%% : %.2f%%",c*100,d*100);
}
if(aRxBuffer2[6]==0xaa) //一级加速
{
flag=0;
a=2447;
b=2447;
TIM_SetCompare1(TIM3,a);
TIM_SetCompare2(TIM3,b);
PBout(13)=1;
PBout(14)=1;
c=((float)2447)/2879;
d=((float)2447)/2879;
printf("%.2f%% : %.2f%%",c*100,d*100);
}
if(aRxBuffer2[7]==0xaa) //二级加速
{
flag=0;
a=2245;
b=2303;
TIM_SetCompare1(TIM3,a);
TIM_SetCompare2(TIM3,b);
PBout(13)=1;
PBout(14)=1;
c=((float)2245)/2879;
d=((float)2303)/2879;
printf("%.2f%% : %.2f%%",c*100,d*100);
}
if(aRxBuffer2[8]==0xaa) //螺旋运动
{
flag=1;
a=2361;
b=2303;
PBout(13)=1;
PBout(14)=1;
}
}
memset((void *)aRxBuffer2,0,100);
ReceiveState2=0;
RxCounter2=0;
}
}
}
复制代码
所有资料51hei提供下载:
下位机程序.7z
(196.57 KB, 下载次数: 38)
2019-7-14 01:14 上传
点击文件名下载附件
不懂再问
下载积分: 黑币 -5
作者:
admin
时间:
2019-7-14 01:15
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
xiaozhong1314
时间:
2019-7-14 09:20
没注释,有点懵
作者:
jzyhxf
时间:
2019-7-15 14:33
其他部分代码呢
作者:
MaxWell_nice
时间:
2019-10-11 23:12
jzyhxf 发表于 2019-7-15 14:33
其他部分代码呢
可以加我qq问,这个上传的比较水,不好意思,961109198
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1