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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2400|回復: 0
收起左側

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

[復制鏈接]
ID:389034 發表于 2018-8-25 12:06 | 顯示全部樓層 |閱讀模式
基于stm32f1的讀取博創串口控制電機的協議,通過讀取博創控制卡串口發送的數據轉成PWM來控制電機
0.png
單片機源程序如下:
  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 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品中文字幕一区二区三区 | 亚洲精品在线播放 | www.欧美.com | 91久久久久久久久久久久久 | 羞羞的视频在线 | 蜜桃视频成人 | 在线观看免费av网 | 欧美日韩国产一区二区 | av在线一区二区 | 人人叉 | 国产精品久久久久久久久久久久 | 日韩在线| 日韩中文一区二区三区 | 国产一区二区三区四区五区加勒比 | 成人精品一区二区 | 欧美xxxx色视频在线观看免费 | 欧美a区| 久久国产精品99久久久大便 | 久久精品视频一区二区三区 | 一级黄色片在线免费观看 | 91精品国产综合久久久久 | 欧美一区二区三区在线免费观看 | 成人精品国产一区二区4080 | 玖玖国产 | 精品欧美乱码久久久久久1区2区 | caoporon| 亚洲九色| 欧美日韩精品在线一区 | 老牛嫩草一区二区三区av | 99成人 | 国产欧美一区二区三区国产幕精品 | 黄色av网站在线观看 | 婷婷久久一区 | 天天弄天天操 | 天天操人人干 | 成人免费小视频 | 波多野结衣二区 | 91视频a| 久久久噜噜噜久久中文字幕色伊伊 | 国产成人免费观看 | 国产激情免费视频 |