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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3110|回復: 3
收起左側

STM32飛控源碼基本版

[復制鏈接]
ID:350708 發表于 2018-6-26 23:44 | 顯示全部樓層 |閱讀模式


單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "usart.h"
  3. #include "delay.h"
  4. #include "sys.h"
  5. #include <math.h>
  6. #include "mysystem.h"
  7. #include "mpu6050.h"
  8. #include "myiic.h"
  9. #include "led.h"
  10. #include "adc.h"
  11. #include "spi.h"
  12. #include "nrf24l01.h"
  13. #include "time.h"
  14. #include "motor.h"
  15. #include "rc.h"
  16. #include "pid_own.h"
  17. #include "myimu.h"
  18. #include "iwdg.h"


  19. u8 count=0;
  20. u8 Con_FLAG = 0;
  21. Int16_xyz Accel,Gyro;           //兩次綜合后的傳感器數據
  22. Int16_xyz        Acc_Data_Con;  //濾波后的加速度
  23. Float_angle  Att_Angle;         //ATT函數計算出的姿態角

  24. static u8 Count=0;
  25. static Int16_xyz mpu6050_dataacc1,mpu6050_dataacc2,mpu6050_datagyr1,mpu6050_datagyr2;

  26. int Arm_Count=0,Dis_Count=0;


  27. int main(void)
  28. {
  29.         armed=0;//鎖四軸
  30.        
  31.         delay_init();
  32.         LED_Init();
  33.         I2C_EE_Init();
  34.         delay_ms(20);
  35.         MPU6050_Init();
  36.         ADC1_Init();
  37.         Spi1_Init();
  38.         Nrf24l01_Init(MODEL_TX2,40);
  39.         delay_ms(10);
  40.         Tim3_Init(499);
  41.         TIM2_PWM_Init(999,72/24-1);
  42.         USART1_Init(115200);
  43.         Nvic_Init();
  44.        
  45.         if(Nrf24l01_Check())
  46.         {
  47.                 USART1_Put_String("NRF IS OK !!!");
  48.         }

  49.         LED_FLASH();

  50.         Tim3_Con(1);
  51.         IWDG_Init(0,625);//1/16 S
  52.        
  53.         while(1)
  54.         {
  55.                 RC_Rece();
  56.                
  57.                 if(Receive.AD_YM < 500 && Receive.AD_PZ < 1500) Arm_Count++;
  58.                 else Arm_Count = 0;
  59.                 if(Receive.AD_YM < 500 && Receive.AD_PZ > 2500) Dis_Count++;
  60.                 else Dis_Count = 0;
  61.                
  62.                 if(Arm_Count > 20000) {Arm_Count=0; armed = 1; LEDY_ON delay_ms(300);LEDY_OFF delay_ms(300);LEDY_ON delay_ms(300);LEDY_OFF delay_ms(300);LEDY_ON delay_ms(300);LEDY_OFF delay_ms(300);}
  63.                 if(Dis_Count > 20000) {Dis_Count=0; armed = 0; LEDY_ON delay_ms(50);LEDY_OFF delay_ms(50);LEDY_ON delay_ms(50);LEDY_OFF delay_ms(50);LEDY_ON delay_ms(50);LEDY_OFF delay_ms(50);LEDY_ON delay_ms(50);LEDY_OFF delay_ms(50);}
  64.                        
  65.                 if(Receive.Fun == 0) LEDY_ON
  66.                 else LEDY_OFF
  67.         }
  68. }

  69. void TIM3_IRQHandler(void)                //0.5ms中斷一次
  70. {       
  71.         if ( TIM_GetITStatus(TIM3 , TIM_IT_Update) != RESET )
  72.         {
  73.                 TIM_ClearITPendingBit(TIM3 , TIM_FLAG_Update);   //清除中斷標志

  74.                 count++;
  75.                
  76.                 IWDG_Feed();//防止卡死的關鍵
  77.                 Nrf_Check_Event();
  78.                
  79.                 RC_Send();
  80.                 NRF_TxPacket(NRF24L01_TXDATA,32);

  81.                 if(count == 2)//1ms
  82.                 {
  83.                         count = 0;
  84.                         MPU6050_GetDate();
  85.                        
  86.                         Con_FLAG = 1;
  87.                 }
  88.                 if(Con_FLAG)//1ms
  89.                 {
  90.                         Con_FLAG = 0;
  91.                         Count ++;
  92.                        
  93.                         if(Count == 1)
  94.                                 MPU6050_DataCon(&mpu6050_dataacc1,&mpu6050_datagyr1);        //2ms
  95.                         else
  96.                         {
  97.                                 Count = 0;
  98.                                 MPU6050_DataCon(&mpu6050_dataacc2,&mpu6050_datagyr2);        //2ms
  99.                                 Accel.X = (mpu6050_dataacc1.X + mpu6050_dataacc2.X)/2;
  100.                                 Accel.Y = (mpu6050_dataacc1.Y + mpu6050_dataacc2.Y)/2;
  101.                                 Accel.Z = (mpu6050_dataacc1.Z + mpu6050_dataacc2.Z)/2;
  102.                                 Gyro.X = (mpu6050_datagyr1.X + mpu6050_datagyr2.X)/2;
  103.                                 Gyro.Y = (mpu6050_datagyr1.Y + mpu6050_datagyr2.Y)/2;
  104.                                 Gyro.Z = (mpu6050_datagyr1.Z + mpu6050_datagyr2.Z)/2;
  105.                        
  106.                                 Accel_Con(&Accel,&Acc_Data_Con);//加速度濾波
  107.                                 IMUupdate(&Gyro,&Acc_Data_Con,&Att_Angle);        //IMU姿態解算
  108.                                 Pid_Con(Att_Angle.pit,Gyro.X,Att_Angle.rol,Gyro.Y,Att_Angle.yaw,Gyro.Z,Receive.AD_YM,armed);
  109.                         }
  110.                 }
  111.         }

  112. }

  113. //                if(Att_Angle.pit >= 0)
  114. //                {
  115. //                        USART_SendData(USART1, '+');delay_ms(1);
  116. //                        USART_SendData(USART1, '0'+(int)Att_Angle.pit % 1000/100);delay_ms(1);
  117. //                        USART_SendData(USART1, '0'+(int)Att_Angle.pit % 100/10);delay_ms(1);
  118. //                        USART_SendData(USART1, '0'+(int)Att_Angle.pit % 10);delay_ms(1);
  119. //                        USART_SendData(USART1, '\n');//Delay_ms_led(100);
  120. //                }
  121. //                else
  122. //                {
  123. //                        USART_SendData(USART1, '-');delay_ms(1);
  124. //                        USART_SendData(USART1, '0'+abs((int)Att_Angle.pit)/100);delay_ms(1);
  125. //                        USART_SendData(USART1, '0'+abs((int)Att_Angle.pit)%100/10);delay_ms(1);
  126. //                        USART_SendData(USART1, '0'+abs((int)Att_Angle.pit)%10);delay_ms(1);
  127. //                        USART_SendData(USART1, '\n');//Delay_ms_led(100);               
  128. //                }
  129. //                if(Att_Angle.rol >= 0)
  130. //                {
  131. //                        USART_SendData(USART1, '+');delay_ms(1);
  132. //                        USART_SendData(USART1, '0'+(int)Att_Angle.rol % 1000/100);delay_ms(1);
  133. //                        USART_SendData(USART1, '0'+(int)Att_Angle.rol % 100/10);delay_ms(1);
  134. //                        USART_SendData(USART1, '0'+(int)Att_Angle.rol % 10);delay_ms(1);
  135. //                        USART_SendData(USART1, '\n');//Delay_ms_led(100);
  136. //                }
  137. //                else
  138. //                {
  139. //                        USART_SendData(USART1, '-');delay_ms(1);
  140. //                        USART_SendData(USART1, '0'+abs((int)Att_Angle.rol)/100);delay_ms(1);
  141. //                        USART_SendData(USART1, '0'+abs((int)Att_Angle.rol)%100/10);delay_ms(1);
  142. //                        USART_SendData(USART1, '0'+abs((int)Att_Angle.rol)%10);delay_ms(1);
  143. //                        USART_SendData(USART1, '\n');//Delay_ms_led(100);               
  144. //                }
  145. //                if(Gyro.X >= 0)
  146. //                {
  147. //                        USART_SendData(USART1, '+');delay_ms(1);
  148. //                        USART_SendData(USART1, '0'+(int)Gyro.X % 1000/100);delay_ms(1);
  149. //                        USART_SendData(USART1, '0'+(int)Gyro.X % 100/10);delay_ms(1);
  150. //                        USART_SendData(USART1, '0'+(int)Gyro.X % 10);delay_ms(1);
  151. //                        USART_SendData(USART1, '\n');//Delay_ms_led(100);
  152. //                }
  153. //                else
  154. //                {
  155. //                        USART_SendData(USART1, '-');delay_ms(1);
  156. //                        USART_SendData(USART1, '0'+abs((int)Gyro.X)/100);delay_ms(1);
  157. //                        USART_SendData(USART1, '0'+abs((int)Gyro.X)%100/10);delay_ms(1);
  158. //                        USART_SendData(USART1, '0'+abs((int)Gyro.X)%10);delay_ms(1);
  159. //                        USART_SendData(USART1, '\n');//Delay_ms_led(100);               
  160. //                }

復制代碼

所有資料51hei提供下載:
飛控基本版.rar (316.8 KB, 下載次數: 34)

評分

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

查看全部評分

回復

使用道具 舉報

ID:340892 發表于 2018-7-25 17:12 | 顯示全部樓層
這個是stm32f10幾的板子??
回復

使用道具 舉報

ID:340892 發表于 2018-7-25 17:13 | 顯示全部樓層
這個代碼寫的是32哪個型號的板子
回復

使用道具 舉報

ID:586381 發表于 2020-1-30 18:57 | 顯示全部樓層
古德,感謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 神马九九 | 天天天天天操 | 国产黄色麻豆视频 | 日本在线看片 | 欧美激情 一区 | 欧美日韩综合 | 色小姐综合网 | 国产一区不卡 | 国产精品视频导航 | 国产精品视频偷伦精品视频 | 狠狠操天天操 | 午夜电影在线播放 | 美女久久久久久久 | 国产一区二区三区日韩 | 欧美日韩亚洲系列 | 91久久视频 | 久久区二区 | 在线观看黄色电影 | 国产一区不卡 | 国产一区二区在线视频 | 欧美精品一区二区三区在线播放 | 手机看黄av免费网址 | 精品亚洲一区二区三区 | 日日摸夜夜爽人人添av | 亚洲精品一区中文字幕乱码 | 毛片一级黄色 | 一区二区三区四区免费观看 | 99免费精品视频 | 亚州精品天堂中文字幕 | 天天曰夜夜 | 精品久久中文字幕 | 日韩在线视频观看 | 亚洲高清视频在线 | 精品无码久久久久久国产 | 日本国产精品视频 | 国产一级电影在线观看 | 黄色一级大片在线免费看产 | av在线播放一区二区 | 国产99精品| 精品国产成人 | 国产精品99久久久久久久vr |