|
這是我做比賽用到的一個(gè)程序,stm32f103的PS2四驅(qū)麥倫。用的是兩根線控制電機(jī)的,所以要輸出好多道pwm
單片機(jī)源程序如下:
- #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
- //霍爾傳感器 無磁場(chǎng)高電平
- //限位開關(guān) 無限位高電平
- //Handkey值
- //0xffff 無按鍵
- //[粉 藍(lán) 紅 綠 R1 L1 R2 L2 左 下 右 上 START R3 L3 SELECT] 對(duì)應(yīng)每一位含義
- 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; //前進(jìn)
- 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; //云臺(tái)進(jìn)
- 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; //云臺(tái)退
- 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; //減速進(jìn)
- 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: //藍(lán)
- 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; //順
- //組合測(cè)試
- case 0xefef: //進(jìn) 抬
- 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: //進(jìn) 落
- 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: //進(jìn) 云進(jìn)
- 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: //退 云進(jìn)
- 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: //左 云進(jìn)
- 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: //右 云進(jìn)
- 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: //進(jìn) 云退
- 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: //抬 云進(jìn)
- 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: //落 云進(jìn)
- 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);
- }
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
麥輪.7z
(186.67 KB, 下載次數(shù): 14)
2020-11-16 15:45 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|