久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4417|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

STM32F103舵機(jī)+電機(jī)控制機(jī)器人程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:583535 發(fā)表于 2019-7-13 16:20 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
本人自己寫的程序,之前參加比賽用的,不懂就問

單片機(jī)源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "usart.h"
  6. #include "timer.h"
  7. #include "string.h"
  8. volatile u8 aRxBuffer[100]={0};
  9. volatile u8 RxCounter=0;
  10. volatile u8 ReceiveState=0;

  11. volatile u8 aRxBuffer2[100]={0};
  12. volatile u8 RxCounter2=0;
  13. volatile u8 ReceiveState2=0;
  14. char flag=0;
  15. float a=0;
  16. float b=0;
  17. float c=0;
  18. float d=0;
  19. u16 m[2]={0};
  20. char timeflag=0;
  21. int x=0;



  22.         
  23. int main(void)
  24. {               
  25.          u16         time1,time2;
  26.          int i=0;
  27.          delay_init();                     //延時(shí)函數(shù)初始化         
  28.          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  29.          uart1_init(9600);         //串口初始化為115200
  30.          uart3_init(9600);
  31.           LED_Init();                             //LED端口初始化        
  32.           TIM3_PWM_Init(2879,0);         //不分頻。PWM頻率=72000000/900=80Khz
  33.          TIM_SetCompare1(TIM3,0);
  34.          TIM_SetCompare2(TIM3,0);
  35.            while(1)               
  36.         {               

  37.                 if(flag==1)
  38.                 {
  39.                         delay_ms(120);
  40.                         TIM_SetCompare1(TIM3,a);
  41.                         TIM_SetCompare2(TIM3,b);               
  42.                         if(a>=1500)        a--;
  43.                 }
  44.                 if(flag==2)
  45.                 {
  46.                         delay_ms(time1);
  47.                         TIM_SetCompare1(TIM3,m[0]);
  48.                         //TIM_SetCompare2(TIM3,m[1]);
  49.                         if(m[0]>=1500) m[0]--;
  50.                 }
  51.                 if(flag==3)
  52.                 {
  53.                         //delay_ms(8000);
  54.                         TIM_SetCompare1(TIM3,2735);
  55.                         TIM_SetCompare2(TIM3,2735);
  56.                         for(x=0;x<=7;x++)
  57.                         {
  58.                         delay_ms(1000);
  59.                         }               
  60.                         TIM_SetCompare1(TIM3,0);
  61.                         TIM_SetCompare2(TIM3,0);
  62.                         flag=0;
  63.                 }
  64.                
  65.                 if(timeflag==1)
  66.                 {        
  67.                         timeflag=0;        
  68.                         TIM_SetCompare2(TIM3,m[1]);
  69.                         if(m[1]>=1500) m[1]--;
  70.                         //printf("111");
  71.                 }
  72.                
  73.                         if( ReceiveState == 1)        //電腦調(diào)試
  74.                         {
  75.                                 for(i=0;i<=8;i++)
  76.                                 {
  77.                                 if((aRxBuffer[i]==0x4d)&&(aRxBuffer[i+1]==0x4d))
  78.                                 {
  79.                                         if(aRxBuffer[i+8]==0x00)
  80.                                         {
  81.                                         flag=0;
  82.                                         TIM_ITConfig(TIM5,TIM_IT_Update,DISABLE );
  83.                                         m[0]=(aRxBuffer[i+3]<<8)+(aRxBuffer[i+2]);
  84.                                         m[1]=(aRxBuffer[i+6]<<8)+(aRxBuffer[i+5]);
  85.                                         TIM_SetCompare1(TIM3,m[0]);
  86.                                         TIM_SetCompare2(TIM3,m[1]);
  87.                                         PBout(13)=aRxBuffer[i+4];
  88.                                         PBout(14)=aRxBuffer[i+7];                                                                        
  89.                                         a=((float)m[0])/2879;
  90.                                         b=((float)m[1])/2879;
  91.                                         printf("%.2f%%   :   %.2f%%",a*100,b*100);
  92.                                         break;
  93.                                         }
  94.                                         if(aRxBuffer[i+8]==0x01)
  95.                                         {
  96.                                         m[0]=(aRxBuffer[i+3]<<8)+(aRxBuffer[i+2]);
  97.                                         m[1]=(aRxBuffer[i+6]<<8)+(aRxBuffer[i+5]);
  98.                                         PBout(13)=aRxBuffer[i+4];
  99.                                         PBout(14)=aRxBuffer[i+7];        
  100.                                         flag=2;
  101.                                         time1=aRxBuffer[i+9];
  102.                                         time2=((u16)aRxBuffer[i+10])*100;
  103.                                                 printf("time1 = %d",time1);
  104.                                                 printf("time2 = %d",time2);
  105.                                         TIM_SetCompare1(TIM3,m[0]);
  106.                                         TIM_SetCompare2(TIM3,m[1]);
  107.                                         TIM5_Int_Init(time2,7199);
  108.                                         break;
  109.                                         }
  110.                                 }
  111.                                 }
  112.                                 memset((void *)aRxBuffer,0,100);
  113.                                 ReceiveState=0;
  114.                                 RxCounter=0;
  115.                         }
  116.                         
  117.                         if(ReceiveState2 == 1)
  118.                         {
  119.                                 printf("ok");
  120.                                 if(aRxBuffer2[0]==0xFF)
  121.                                 {
  122.                                         if(aRxBuffer2[1]==0xaa) //前進(jìn)
  123.                                         {
  124.                                                 flag=0;
  125.                                                 a=2159;
  126.                                                 b=2101;
  127.                                                 TIM_SetCompare1(TIM3,a);
  128.                                                 TIM_SetCompare2(TIM3,b);
  129.                                                 PBout(13)=1;
  130.                                                 PBout(14)=1;        
  131.                                                 c=((float)2159)/2879;
  132.                                                 d=((float)2101)/2879;
  133.                                                 printf("%.2f%%   :   %.2f%%",c*100,d*100);
  134.                                         }
  135.                                         if(aRxBuffer2[2]==0xaa)        //左轉(zhuǎn)
  136.                                         {
  137.                                                 flag=0;
  138.                                                 a=1958;
  139.                                                 b=1987;
  140.                                                 TIM_SetCompare1(TIM3,a);
  141.                                                 TIM_SetCompare2(TIM3,b);
  142.                                                 PBout(13)=1;
  143.                                                 PBout(14)=1;
  144.                                                 c=((float)1958)/2879;
  145.                                                 d=((float)1987)/2879;
  146.                                                 printf("%.2f%%   :   %.2f%%",c*100,d*100);
  147.                                         }
  148.                                         if(aRxBuffer2[3]==0xaa)        //右轉(zhuǎn)
  149.                                         {
  150.                                                 flag=0;
  151.                                                 a=2159;
  152.                                                 b=1958;
  153.                                                 TIM_SetCompare1(TIM3,a);
  154.                                                 TIM_SetCompare2(TIM3,b);
  155.                                                 PBout(13)=1;
  156.                                                 PBout(14)=1;
  157.                                                 c=((float)2159)/2879;
  158.                                                 d=((float)1958)/2879;
  159.                                                 printf("%.2f%%   :   %.2f%%",c*100,d*100);
  160.                                         }
  161.                                         if(aRxBuffer2[4]==0xaa)        //切割運(yùn)動
  162.                                         {
  163.                                                 flag=3;                                       
  164.                                                 PBout(13)=1;
  165.                                                 PBout(14)=1;                                       
  166.                                         }
  167.                                                 if(aRxBuffer2[5]==0xaa)        //停
  168.                                         {
  169.                                                 flag=0;
  170.                                                 a=0;
  171.                                                 b=0;
  172.                                                 TIM_SetCompare1(TIM3,a);
  173.                                                 TIM_SetCompare2(TIM3,b);
  174.                                                 PBout(13)=1;
  175.                                                 PBout(14)=1;
  176.                                                 c=((float)0)/2879;
  177.                                                 d=((float)0)/2879;
  178.                                                 printf("%.2f%%   :   %.2f%%",c*100,d*100);
  179.                                         }
  180.                                         if(aRxBuffer2[6]==0xaa)        //一級加速
  181.                                         {
  182.                                                 flag=0;
  183.                                                 a=2447;
  184.                                                 b=2447;
  185.                                                 TIM_SetCompare1(TIM3,a);
  186.                                                 TIM_SetCompare2(TIM3,b);
  187.                                                 PBout(13)=1;
  188.                                                 PBout(14)=1;
  189.                                                 c=((float)2447)/2879;
  190.                                                 d=((float)2447)/2879;
  191.                                                 printf("%.2f%%   :   %.2f%%",c*100,d*100);
  192.                                         }
  193.                                         if(aRxBuffer2[7]==0xaa)        //二級加速
  194.                                         {
  195.                                                 flag=0;
  196.                                                 a=2245;
  197.                                                 b=2303;
  198.                                                 TIM_SetCompare1(TIM3,a);
  199.                                                 TIM_SetCompare2(TIM3,b);
  200.                                                 PBout(13)=1;
  201.                                                 PBout(14)=1;
  202.                                                 c=((float)2245)/2879;
  203.                                                 d=((float)2303)/2879;
  204.                                                 printf("%.2f%%   :   %.2f%%",c*100,d*100);
  205.                                         }

  206.                                         if(aRxBuffer2[8]==0xaa)        //螺旋運(yùn)動
  207.                                         {
  208.                                                 flag=1;
  209.                                                 a=2361;
  210.                                                 b=2303;
  211.                                                 PBout(13)=1;
  212.                                                 PBout(14)=1;
  213.                                         }                                                                                
  214.                                 }
  215.                                         memset((void *)aRxBuffer2,0,100);
  216.                                         ReceiveState2=0;
  217.                                         RxCounter2=0;
  218.                         }
  219.         }         
  220. }
復(fù)制代碼

所有資料51hei提供下載:
下位機(jī)程序.7z (196.57 KB, 下載次數(shù): 38)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-7-14 01:15 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

板凳
ID:421308 發(fā)表于 2019-7-14 09:20 | 只看該作者
沒注釋,有點(diǎn)懵
回復(fù)

使用道具 舉報(bào)

地板
ID:541540 發(fā)表于 2019-7-15 14:33 | 只看該作者
其他部分代碼呢
回復(fù)

使用道具 舉報(bào)

5#
ID:583535 發(fā)表于 2019-10-11 23:11
xiaozhong1314 發(fā)表于 2019-7-14 09:20
沒注釋,有點(diǎn)懵

可以加我qq問,這個(gè)上傳的比較水不好意思,961109198

6#
ID:583535 發(fā)表于 2019-10-11 23:12 | 只看該作者

可以加我qq問,這個(gè)上傳的比較水,不好意思,961109198
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合 | 亚洲欧美日本在线 | 天天综合网91 | 18成人在线观看 | 欧美国产日韩在线观看成人 | 国产视频久久久久 | 91久久久久| 狠狠干网站| 99精品久久久久久 | 午夜免费视频 | 久久黄网| 黄色免费在线观看网址 | 欧美一区二区综合 | 资源首页二三区 | 中文在线a在线 | 欧美国产日韩一区二区三区 | 国内av在线 | 国产精品视频免费 | 亚洲精品久久国产高清情趣图文 | 在线日韩不卡 | 国产视频1区 | 日韩高清www | 美女激情av | 国产一区二区三区高清 | 最新伦理片 | 国产精品乱码一区二三区小蝌蚪 | 视频一区二区在线观看 | 成年男女免费视频网站 | 国产欧美在线视频 | 91精品久久久久久久久久小网站 | 亚洲欧美第一视频 | 91精品一区 | 亚洲欧美国产精品久久 | 91不卡| 精品欧美 | 国产xxxx搡xxxxx搡麻豆 | 久久久久国产精品午夜一区 | 一区免费视频 | 亚洲综合久久久 | 欧美成人精品一区二区三区 | 欧美一区二区三区在线观看视频 |