欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
ps2四驅麥倫車 STM32源程序
[打印本頁]
作者:
嘉哥呀
時間:
2020-11-16 13:16
標題:
ps2四驅麥倫車 STM32源程序
這是我做比賽用到的一個程序,stm32f103的PS2四驅麥倫。用的是兩根線控制電機的,所以要輸出好多道pwm
單片機源程序如下:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "pstwo.h"
//PC6-9 TIM3
//PA0-3 TIM5
//#define A1 PAout(4) 升1
//#define A2 PAout(5) 升2
//#define A3 PAout(6) 云1
//#define A4 PAout(7) 云2
//#define A5 PCout(4) 桿1
//#define A6 PCout(5) 桿2
//霍爾傳感器 無磁場高電平
//限位開關 無限位高電平
//Handkey值
//0xffff 無按鍵
//[粉 藍 紅 綠 R1 L1 R2 L2 左 下 右 上 START R3 L3 SELECT] 對應每一位含義
int main(void)
{
u16 pwm;
delay_init();
// TIM1_PWM_Init(1439,99);
TIM5_3_PWM_Init(1439,99);
LED_Init(); //初始化與LED連接的硬件接口
PS2_Init();
while(1)
{
PS2_DataKey();
delay_ms(50);
switch(Handkey)
{
case 0xffff: //無按鍵
LED=1;
A1=1;A2=1;A3=1;A4=1;
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break; //初始
case 0xffef: //上
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1440);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,1440);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,1440);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,1440);
TIM_SetCompare4(TIM3,pwm);
break; //前進
case 0xffbf: //下
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1440);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1440);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1440);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1440);
break; //后退
case 0xff7f: //左
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1008);
TIM_SetCompare3(TIM5,1008);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1008);
TIM_SetCompare3(TIM3,1008);
TIM_SetCompare4(TIM3,pwm);
break; //左移
case 0xffdf: //右
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1008);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1008);
TIM_SetCompare1(TIM3,1008);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1008);
break; //右移
case 0xf7ff: //R1
LED=0;
A1=0;A2=1;A3=1;A4=1;
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break; //云臺進
case 0xfbff: //L1
LED=0;
A1=1;A2=0;A3=1;A4=1;
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break; //云臺退
case 0xfdff: //R2
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,720);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,720);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,720);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,720);
TIM_SetCompare4(TIM3,pwm);
break; //減速進
case 0xfeff: //L2
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,720);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,720);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,720);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,720);
break; //減速退
case 0xefff: //綠
LED=0;
A1=1;A2=1;
if(CHUAN1==0)
{A3=1;A4=1;}
else
{A3=1;A4=0;}
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break; //上抬
case 0xbfff: //藍
LED=0;
A1=1;A2=1;
if(CHUAN2==0)
{A3=1;A4=1;}
else
{A3=0;A4=1;}
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break; //下落
case 0x7fff: //粉
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1440);
TIM_SetCompare3(TIM5,1440);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,1440);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1440);
break; //逆
case 0xdfff: //紅
LED=0;
A1=1;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1440);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1440);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1440);
TIM_SetCompare3(TIM3,1440);
TIM_SetCompare4(TIM3,pwm);
break; //順
//組合測試
case 0xefef: //進 抬
LED=0;
A1=1;A2=1;
if(CHUAN1==0)
{A3=1;A4=1;}
else
{A3=1;A4=0;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1440);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,1440);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,1440);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,1440);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xefbf: //退 抬
LED=0;
A1=1;A2=1;
if(CHUAN1==0)
{A3=1;A4=1;}
else
{A3=1;A4=0;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1440);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1440);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1440);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1440);
break;
case 0xef7f: //左 抬
LED=0;
A1=1;A2=1;
if(CHUAN1==0)
{A3=1;A4=1;}
else
{A3=1;A4=0;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1008);
TIM_SetCompare3(TIM5,1008);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1008);
TIM_SetCompare3(TIM3,1008);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xefdf: //右 抬
LED=0;
A1=1;A2=1;
if(CHUAN1==0)
{A3=1;A4=1;}
else
{A3=1;A4=0;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1008);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1008);
TIM_SetCompare1(TIM3,1008);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1008);
break;
case 0xbfef: //進 落
LED=0;
A1=1;A2=1;
if(CHUAN2==0)
{A3=1;A4=1;}
else
{A3=0;A4=1;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1440);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,1440);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,1440);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,1440);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xbfbf: //退 落
LED=0;
A1=1;A2=1;
if(CHUAN2==0)
{A3=1;A4=1;}
else
{A3=0;A4=1;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1440);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1440);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1440);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1440);
break;
case 0xbf7f: //左 落
LED=0;
A1=1;A2=1;
if(CHUAN2==0)
{A3=1;A4=1;}
else
{A3=0;A4=1;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1008);
TIM_SetCompare3(TIM5,1008);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1008);
TIM_SetCompare3(TIM3,1008);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xbfdf: //右 落
LED=0;
A1=1;A2=1;
if(CHUAN2==0)
{A3=1;A4=1;}
else
{A3=0;A4=1;}
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1008);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1008);
TIM_SetCompare1(TIM3,1008);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1008);
break;
case 0xf7ef: //進 云進
LED=0;
A1=0;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1440);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,1440);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,1440);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,1440);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xf7bf: //退 云進
LED=0;
A1=0;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1440);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1440);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1440);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1440);
break;
case 0xf77f: //左 云進
LED=0;
A1=0;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1008);
TIM_SetCompare3(TIM5,1008);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1008);
TIM_SetCompare3(TIM3,1008);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xf7df: //右 云進
LED=0;
A1=0;A2=1;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1008);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1008);
TIM_SetCompare1(TIM3,1008);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1008);
break;
case 0xfbef: //進 云退
LED=0;
A1=1;A2=0;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1440);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,1440);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,1440);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,1440);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xfbbf: //退 云退
LED=0;
A1=1;A2=0;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1440);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1440);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1440);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1440);
break;
case 0xfb7f: //左 云退
LED=0;
A1=1;A2=0;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,1008);
TIM_SetCompare3(TIM5,1008);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,1008);
TIM_SetCompare3(TIM3,1008);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xfbdf: //右 云退
LED=0;
A1=1;A2=0;A3=1;A4=1;
pwm=0;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,1008);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,1008);
TIM_SetCompare1(TIM3,1008);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,1008);
break;
case 0xe7ff: //抬 云進
LED=0;
A1=0;A2=1;
if(CHUAN1==0)
{A3=1;A4=1;}
else
{A3=1;A4=0;}
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xebff: //抬 云退
LED=0;
A1=1;A2=0;
if(CHUAN1==0)
{A3=1;A4=1;}
else
{A3=1;A4=0;}
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xb7ff: //落 云進
LED=0;
A1=0;A2=1;
if(CHUAN2==0)
{A3=1;A4=1;}
else
{A3=0;A4=1;}
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break;
case 0xbbff: //落 云退
LED=0;
A1=1;A2=0;
if(CHUAN2==0)
{A3=1;A4=1;}
else
{A3=0;A4=1;}
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
break;
default: //其他情況
{
LED=1;
A1=1;A2=1;A3=1;A4=1;
pwm=1440;//pwm越小正脈寬越小
TIM_SetCompare1(TIM5,pwm);
TIM_SetCompare2(TIM5,pwm);
TIM_SetCompare3(TIM5,pwm);
TIM_SetCompare4(TIM5,pwm);
TIM_SetCompare1(TIM3,pwm);
TIM_SetCompare2(TIM3,pwm);
TIM_SetCompare3(TIM3,pwm);
TIM_SetCompare4(TIM3,pwm);
}
}
}
}
復制代碼
所有資料51hei提供下載:
麥輪.7z
(186.67 KB, 下載次數: 14)
2020-11-16 15:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1