找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4440|回復(fù): 2
收起左側(cè)

標(biāo)準(zhǔn)版麥輪小車STM32源碼

[復(fù)制鏈接]
ID:397617 發(fā)表于 2019-1-11 08:59 | 顯示全部樓層 |閱讀模式
單片機(jī)源程序如下:
  1. #include "sys.h"
  2. u8 Flag_Left,Flag_Right,Flag_Direction=0;   //藍(lán)牙遙控相關(guān)的變量
  3. u8 Flag_Stop=1,Flag_Show=0;                 //停止標(biāo)志位和 顯示標(biāo)志位 默認(rèn)停止 顯示打開
  4. int Encoder_A,Encoder_B,Encoder_C,Encoder_D;          //編碼器的脈沖計數(shù)
  5. long int Position_A,Position_B,Position_C,Position_D,Rate_A,Rate_B,Rate_C,Rate_D; //PID控制相關(guān)變量
  6. int Encoder_A_EXTI;                       //通過外部中斷讀取的編碼器數(shù)據(jù)                       
  7. long int Motor_A,Motor_B,Motor_C,Motor_D;        //電機(jī)PWM變量
  8. long int Target_A,Target_B,Target_C,Target_D;     //電機(jī)目標(biāo)值
  9. int Voltage;                             //電池電壓采樣相關(guān)的變量
  10. float Show_Data_Mb;                      //全局顯示變量,用于顯示需要查看的數(shù)據(jù)                        
  11. u8 delay_50,delay_flag;                          //延時相關(guān)變量
  12. u8 Run_Flag=0;                                                                                                  //藍(lán)牙遙控相關(guān)變量和運(yùn)行狀態(tài)標(biāo)志位
  13. u8 rxbuf[8],Urxbuf[8],CAN_ON_Flag=0,Usart_ON_Flag=0,Usart_Flag,PID_Send,Flash_Send;  //CAN和串口控制相關(guān)變量
  14. u8 txbuf[8],txbuf2[8],Turn_Flag;             //CAN發(fā)送相關(guān)變量
  15. float Pitch,Roll,Yaw,Move_X,Move_Y,Move_Z;   //三軸角度和XYZ軸目標(biāo)速度
  16. u16 PID_Parameter[10],Flash_Parameter[10];  //Flash相關(guān)數(shù)組
  17. float        Position_KP=40,Position_KI=0,Position_KD=40;  //位置控制PID參數(shù)
  18. float Velocity_KP=10,Velocity_KI=10;                  //速度控制PID參數(shù)
  19. int RC_Velocity=30,RC_Position=3000;         //設(shè)置遙控的速度和位置值
  20. int main(void)
  21. {
  22.         Stm32_Clock_Init(9);            //=====系統(tǒng)時鐘設(shè)置
  23.         delay_init(72);                 //=====延時初始化
  24.         JTAG_Set(JTAG_SWD_DISABLE);     //=====關(guān)閉JTAG接口
  25.         JTAG_Set(SWD_ENABLE);           //=====打開SWD接口 可以利用主板的SWD接口調(diào)試
  26.         LED_Init();                     //=====初始化與 LED 連接的硬件接口
  27.         KEY_Init();                     //=====按鍵初始化
  28.         if(MODE==0)Run_Flag=1;          //=====啟動的過程中,根據(jù)模式選擇開關(guān)確定進(jìn)入位置模式還是速度模式
  29.         else Run_Flag=0;                //=====啟動的過程中,根據(jù)模式選擇開關(guān)確定進(jìn)入位置模式還是速度模式
  30.         OLED_Init();                    //=====OLED初始化
  31.         uart_init(72,128000);           //=====串口1初始化
  32.         uart2_init(36,9600);            //=====串口2初始化
  33.   uart3_init(36,115200);          //=====串口3初始化
  34.         Encoder_Init_TIM2();            //=====編碼器接口
  35.         Encoder_Init_TIM3();            //=====編碼器接口
  36.         Encoder_Init_TIM4();            //=====初始化編碼器C
  37.         Encoder_Init_TIM5();            //=====初始化編碼器D
  38.         Adc_Init();                     //=====adc初始化
  39.         IIC_Init();                     //=====IIC初始化
  40.   MPU6050_initialize();           //=====MPU6050初始化       
  41.   DMP_Init();                     //=====初始化DMP     
  42.         MiniBalance_PWM_Init(7199,0);   //=====初始化PWM 10KHZ,用于驅(qū)動電機(jī)
  43.         if(KEY==0) Flash_Read();        //=====讀取Flash里面的參數(shù)
  44.   EXTI_Init();                    //=====MPU6050 5ms定時中斷初始化
  45.   CAN1_Mode_Init(1,2,3,6,0);      //=====CAN初始化
  46.        
  47.         while(1)
  48.                 {               
  49.                   if(Flash_Send==1)          //寫入PID參數(shù)到Flash,由app控制該指令
  50.                         {
  51.                                 Flash_Write();       
  52.                                 Flash_Send=0;       
  53.                         }       
  54.             if(Flag_Show==0)           //使用MiniBalance APP和OLED顯示屏
  55.                         {
  56.                                 APP_Show();                      
  57.                                 oled_show();             //===顯示屏打開
  58.             }
  59.             else                       //使用MiniBalance上位機(jī) 上位機(jī)使用的時候需要嚴(yán)格的時序,故此時關(guān)閉app監(jiān)控部分和OLED顯示屏
  60.                   {
  61.                                 DataScope();             //開啟MiniBalance上位機(jī)
  62.                         }
  63.               CAN1_SEND();             //CAN發(fā)送                       
  64.                         delay_flag=1;       
  65.                         delay_50=0;
  66.                         while(delay_flag);               //通過MPU6050的INT中斷實(shí)現(xiàn)的50ms精準(zhǔn)延時                               
  67.                 }
  68. }
復(fù)制代碼

所有資料51hei提供下載:
1.標(biāo)準(zhǔn)版麥輪小車源碼.7z (173.45 KB, 下載次數(shù): 83)


回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2019-1-11 14:50 | 顯示全部樓層
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報

ID:621885 發(fā)表于 2020-6-28 22:10 | 顯示全部樓層
為社么打不開了
、
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表