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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2493|回復: 0
打印 上一主題 下一主題
收起左側

基于stm32f1的讀取博創CDs5500串口控制電機的協議源碼

[復制鏈接]
跳轉到指定樓層
樓主
基于stm32f1的讀取博創串口控制電機的協議,通過讀取博創控制卡串口發送的數據轉成PWM來控制電機

單片機源程序如下:
  1. /************************GUO NING*******************
  2. 文件名:main.c
  3. 維護人:
  4. 維護日期:
  5. 描述:主函數程序,執行接收到的命令
  6. ****************************************************/
  7. #include "stm32f0xx.h"
  8. #include "userdef.h"
  9. #include "led.h"
  10. #include "motor.h"
  11. #include "cds5500_slave.h"
  12. #include "delay.h"
  13. //#include <stdio.h>

  14. u16 speed_A=0,speed_B=0;

  15. int main(){
  16.         Delay_Init(48);
  17.         LED_Init();
  18. //        LED_ON;
  19. //        delay_ms(500);
  20.         motor_conf();
  21.         CDS_Init();
  22. //        printf("STM32F030F4P6 USART TEST\r\n");
  23. //        LED_OFF;
  24. //        delay_ms(500);

  25.         while(1){
  26. //                printf("%d ok\r\n",CDS5500_data[0].buf[2]);
  27. //                printf("%d ok\r\n",CDS5500_data[0].buf[11]);
  28. //                printf("CDSFrames_D=%d\r\n",CDSFrames_D);
  29. //                printf("CDSFrames_R=%d\r\n",CDSFrames_R);
  30.                 if(CDSFrames_D!=CDSFrames_R){
  31.                         u8 len,i,csum=0;
  32.                         LED_ON;
  33.                         len=CDS5500_data[CDSFrames_D].buf[3];
  34.                         for(i=0;i<len+1;i++)
  35.                         {
  36.                                 csum+=CDS5500_data[CDSFrames_D].buf[2+i];
  37.                         }
  38. //                        printf("%d\r\n",((u8)(~csum)));
  39. //                        printf("%d ok\r\n",CDS5500_data[CDSFrames_D].buf[len+3]);
  40. //                printf("CDS5500_data[0]=");

  41. //                for(i=0;i<20;i++)
  42. //                printf(" %02X",CDS5500_data[0].buf[i]);
  43. //                printf("\r\n");
  44. //                printf("CDS5500_data[1]=");
  45. //      for(i=0;i<20;i++)
  46. //                printf(" %02X",CDS5500_data[1].buf[i]);
  47. //                printf("\r\n");
  48.                 printf("CDS5500_data[3]=");
  49.       for(i=0;i<20;i++)
  50.                 printf(" %02X",CDS5500_data[CDSFrames_D].buf[i]);
  51.                 printf("\r\n\r\n");
  52. //                printf(" %02X",CDS5500_data[CDSFrames_D].buf[len+3]);
  53. //                printf("\r\n");
  54. //      printf(" %02X",(u8)(~csum));
  55. //                printf("\r\n");
  56.                         if(CDS5500_data[CDSFrames_D].buf[len+3]==(u8)(~csum)){
  57.                                 
  58.                                 if(CDS5500_data[CDSFrames_D].buf[2]==ID_A){
  59.                                         if((CDS5500_data[CDSFrames_D].buf[4]==CMD_WRITE)&&(CDS5500_data[CDSFrames_D].buf[5]==0X20)){
  60.                                                 speed_A=CDS5500_data[CDSFrames_D].buf[7]&0X03;
  61.                                                 speed_A<<=8;
  62.                                                 speed_A|=CDS5500_data[CDSFrames_D].buf[6];
  63.                                                 if(speed_A==0){                                                                                                                                                                        //制動
  64.                                                         GPIO_ResetBits(GPIOA,GPIO_Pin_2);
  65.                                                         GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  66.                                                 }
  67.                                                 else if((CDS5500_data[CDSFrames_D].buf[7]&0X04)==0){                //前進
  68.                                                         GPIO_SetBits(GPIOA,GPIO_Pin_2);
  69.                                                         GPIO_ResetBits(GPIOA,GPIO_Pin_3);
  70.                                                 }
  71.                                                 else{                                                                //后退
  72.                      GPIO_ResetBits(GPIOA,GPIO_Pin_2);
  73.                                                         GPIO_SetBits(GPIOA,GPIO_Pin_3);
  74.                                                         
  75.                                                 }
  76.                                                 if(speed_A>1000) speed_A=1000;                                       
  77.                                                 TIM_SetCompare1(TIM3,speed_A);
  78.                                                 TIM3->CNT=0;
  79.                                         }
  80.                                 }
  81.                                 if(++CDSFrames_D>=MAX_FRAME_NUM) CDSFrames_D=0;
  82.                         }
  83.                         for(i=0;i<6;i++)
  84.                         {
  85.                                 csum+=CDS5500_data[CDSFrames_D].buf[11+i];
  86.                         }
  87.                         if(CDS5500_data[CDSFrames_D].buf[17]==(u8)(~csum)){
  88.                                 if(CDS5500_data[CDSFrames_D].buf[11]==ID_B){
  89.                                         if((CDS5500_data[CDSFrames_D].buf[13]==CMD_WRITE)&&(CDS5500_data[CDSFrames_D].buf[14]==0X20)){
  90.                                                 speed_B=CDS5500_data[CDSFrames_D].buf[16]&0X03;
  91.                                                 speed_B<<=8;
  92.                                                 speed_B|=CDS5500_data[CDSFrames_D].buf[15];
  93.                                                 if(speed_B==0){                                                                                                                                                                        //制動
  94.                                                         GPIO_ResetBits(GPIOA,GPIO_Pin_4);
  95.                                                         GPIO_ResetBits(GPIOA,GPIO_Pin_5);
  96.                                                 }
  97.                                                 else if((CDS5500_data[CDSFrames_D].buf[16]&0X04)==0){                //前進
  98.                                                         GPIO_SetBits(GPIOA,GPIO_Pin_4);
  99.                                                         GPIO_ResetBits(GPIOA,GPIO_Pin_5);
  100.                                                 }
  101.                                                 else{                                                                                                                                                                                                                //后退
  102.                                                         GPIO_ResetBits(GPIOA,GPIO_Pin_4);
  103.                                                         GPIO_SetBits(GPIOA,GPIO_Pin_5);
  104.                                                         
  105.                                                 }
  106.                                                 if(speed_B>1000) speed_A=1000;                                       
  107.                                                 TIM_SetCompare2(TIM3,speed_B);
  108.                                                 TIM3->CNT=0;
  109.                                         }
  110.                                 }
  111.                                 if(++CDSFrames_D>=MAX_FRAME_NUM) CDSFrames_D=0;
  112.                         }
  113.                         
  114.                         
  115.                 }
  116.                 else LED_OFF;
  117.         }
  118. }
復制代碼

所有資料51hei提供下載:
博創CDs5500協議.rar (611.52 KB, 下載次數: 10)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一级片免费 | 91亚洲精选 | 欧美超碰在线 | 久久九九99| 真实人妻互换毛片视频 | 国产精品海角社区 | 毛片网站在线观看 | 中文字幕在线观看免费 | 日韩欧美网站 | 中文字幕有码在线 | 中文字幕偷拍 | 亚洲成人一区二区 | 欧美久久久久 | 成人在线精品 | 伊人久久中文字幕 | 中文在线字幕免费观看 | 欧美mv日韩mv国产 | 日韩毛片免费看 | 色妞色视频一区二区三区四区 | 国产中文字幕一区 | 中文字幕在线视频观看 | 中文字幕一区二区在线播放 | 黄色成人毛片 | www.av在线视频 | 一区二区色 | 香蕉视频久久 | 黄色国产在线观看 | 亚洲精品aaa | 女同一区二区 | 亚洲免费专区 | 天天拍天天干 | 狠狠操天天操 | 日韩精品在线一区二区 | 久久国产精品免费 | 五月天精品 | 欧美一区二区三区在线视频 | 黄色大片在线播放 | 亚洲欧美精品一区 | 91av免费| 亚洲精品久久久久久久久 | 男人添女荫道口图片 |